![](/img/trans.png)
[英]Java Reflection: Determining class of java.util.regex.Pattern in JRuby
[英]Gson error: Reflection is not allowed on private java.lang.String java.util.regex.Pattern.pattern
我正在使用Gson的.fronJson,
List<MyPattern> MyPattern = gson.fromJson(jsonReader,
new TypeToken<List<MyPattern>>() {}.getType() );
但我收到以下錯誤消息
java.lang.SecurityException:java.lang.IllegalAccessException:不允許在com.google.appengine.runtime.Request.process-ea4f755134111bd0(Request.java ),位於com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:157)上的java.lang.reflect.Field.setAccessible(Field.java:197)
這是我的班級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 Pattern regex;
public String regex;
與
public void setRegex(String regex) { this.regex = regex; }
public void setRegex(String regex) { this.regex = regex; }
。 但是想知道為什么模式不起作用,有沒有辦法解決它並繼續使用模式。
由於Google App Engine實施了一些沙箱限制,因此引發了SecurityException異常(請參閱此帖子 )
為了解決這個問題,我建議以下設置:
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上進行過測試,但您很可能必須按照這些原則進行操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.