2017-12-06 2 views
0

내가 GSON의 .fronJson를 사용하고 허용되지 않습니다하지만 난GSON 오류 : 반사는</p> <pre><code>List<MyPattern> MyPattern = gson.fromJson(jsonReader, new TypeToken<List<MyPattern>>() {}.getType()); </code></pre> <p>, 개인 java.lang.String의 java.util.regex.Pattern.pattern

아래의 오류 메시지를 받았습니다

java.lang.SecurityException: java.lang.IllegalAccessException: Reflection is not allowed on private java.lang.String java.util.regex.Pattern.pattern at com.google.appengine.runtime.Request.process-ea4f755134111bd0(Request.java) at java.lang.reflect.Field.setAccessible(Field.java:197) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:157)

내 수업은 MyPattern입니다.

public class MyPattern { 
    public String category; 
    public Pattern regex; 

    public void setCategory(String category) { 
     this.category = category; 
    } 

    public String getCategory() { 
     return category; 
    } 

    public void setRegex(String regex) { 
     this.regex = Pattern.compile(regex); 
    } 

    public Pattern getRegex() { 
     return regex; 
    } 

    @Override 
    public String toString() { 
     return "key: " + this.category + ", pattern: " + this.regex; 
    } 
} 

이 오류는 Pattern.compile()이 원인입니까? 내가 public Pattern regex;

public void setRegex(String regex) { this.regex = regex; }public String regex; 에 변경 작동합니다. 그러나 왜 패턴이 작동하지 않는지 궁금하고 그것을 해결하고 패턴을 계속 사용하는 방법이 있습니다.

+0

https://stackoverflow.com/questions/32993474/reflection-is-not-allowed-on-private -static-final-int-java-util-bitset-address-b – Kevin

+0

@Kevin 그렇습니다.하지만 문제를 해결하는 방법을 찾지 못했습니다. MyPattern 클래스의 모든 필드는 이미 공개되어 있습니다. – Shuishui

+0

잘 사용하고있는 JSON을 포함 할 수 있습니까? 나는 이것을 지역적으로 시도했으나 정상적으로 작동했다. – Kevin

답변

0

에, SecurityException가

이 해결하기 위해 나는 다음과 같은 설정을 추천 (this post 참조) 때문에 구글 앱 엔진에 의해 강제 일부 샌드 박스의 제한으로 발생 된 것 같습니다 : '

public class MyPattern { 
    public String category; 
    public String regex; 
    public Pattern pattern; 

    public Pattern getPattern() { 
     if(pattern == null) { 
      pattern = Pattern.compile(regex); 
     } 
     return pattern; 
    } 
} 

나는 천국을 Google App Engine에서 테스트했지만 그 라인을 따라 뭔가를해야 할 가능성이 큽니다

관련 문제