मैं, इस कोड के साथ कुछ गंभीर समस्या आ रही है svg-android से:एंड्रॉयड 6.0 (Marshmallow) getDeclaredField() पर स्थिर प्रारंभ अपवाद
public class ParserHelper {
private static final Field STRING_CHARS;
static {
try {
STRING_CHARS = String.class.getDeclaredField("value"); //<-- exception here
STRING_CHARS.setAccessible(true);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private final char[] s;
private final int n;
private char current;
public int pos;
public ParserHelper(String str, int pos) {
try {
this.s = (char[]) STRING_CHARS.get(str);
} catch (Exception e) {
throw new RuntimeException(e);
}
this.pos = pos;
n = s.length;
current = s[pos];
}
STRING_CHARS = String.class.getDeclaredField("value");
excpetion फेंकता
10-09 10: 25: 58.240: ई/एंड्रॉइड रनटाइम (3430): के कारण: java.lang.RuntimeException: java.lang.NoSuchFieldException: कोई फ़ील्ड कक्षा Ljava/lang/String में मूल्य; ('Java.lang.String' की घोषणा /system/framework/core-libart.jar में प्रकट होता है)
मैं काम जारी नहीं रख सकते। केवल एंड्रॉइड 6.0 मार्शमलो में। कोई उपाय?
हल: अब, मैं स्थिर प्रारंभ समस्या हल हो जाती नहीं था, लेकिन मैं char[] s
प्रारंभ बदल दिया है:
public class ParserHelper {
// private static final Field STRING_CHARS;
// static {
// try {
// STRING_CHARS = String.class.getDeclaredField("value");
// STRING_CHARS.setAccessible(true);
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }
private final char[] s;
private final int n;
private char current;
public int pos;
public ParserHelper(String str, int pos) {
try {
s = new char[str.length()];
str.getChars(0, str.length(), this.s, 0); //<-- here
} catch (Exception e) {
throw new RuntimeException(e);
}
this.pos = pos;
n = s.length;
current = s[pos];
}
क्या आपको प्रतिबिंब करने के लिए स्ट्रिंग उदाहरण का उपयोग करने की आवश्यकता नहीं है? इस पर एक विशेषज्ञ नहीं है। – Nanoc
@ नैनोक मुझे न तो ... –
फिर इसके बजाय इसे आजमाएं और मुझे "नया स्ट्रिंग (" हैलो ") बताएं। Class.getDeclaredField (" value ");" – Nanoc