मैं एक ऐसी परियोजना पर काम कर रहा हूं जो बाहरी पुस्तकालय को DexClassLoader के माध्यम से लोड करने का प्रयास करता है। यह 2.3 में बहुत अच्छी तरह से काम किया:एंड्रॉइड हनीकॉम पर DexClassLoader
02-23 09:30:58.221: ERROR/dalvikvm(8022): Can't open dex cache '/data/
dalvik-cache/
[email protected]@[email protected]@[email protected]':
No such file or directory
02-23 09:30:58.221: INFO/dalvikvm(8022): Unable to open or create
cache for /data/data/at.mSystem.client/files/
mSystem_Client_FormularLibrary.jar (/data/dalvik-cache/
[email protected]@[email protected]@[email protected])
02-23 09:30:58.231: WARN/System.err(8022):
java.lang.ClassNotFoundException:
at.mSystem.client.formular.contract.ContractListFormularDisplay in
loader [email protected]
02-23 09:30:58.241: WARN/System.err(8022): at
dalvik.system.DexClassLoader.findClass(DexClassLoader.java:240)
02-23 09:30:58.241: WARN/System.err(8022): at
java.lang.ClassLoader.loadClass(ClassLoader.java:548)
02-23 09:30:58.261: WARN/System.err(8022): at
java.lang.ClassLoader.loadClass(ClassLoader.java:508)
02-23 09:30:58.261: WARN/System.err(8022): at
at.mSystem.client.system.formularmodule.formular.FormularDisplayLoader.getDisplay(FormularDisplayLoader.java:
35)
: दुर्भाग्य से
public class FormularDisplayLoader {
public final static String PATH ="/data/data/at.mSystem.client/files/mSystem_Client_FormularLibrary.jar";
private DexClassLoader classLoader;
public FormularDisplayLoader(Context context){
this.context = context;
this.classLoader = new DexClassLoader("/data/data/at.mSystem.client/
files/mSystem_Client_FormularLibrary.jar",
context.getFilesDir().getAbsolutePath(),
null,
FormularDisplayLoader.class.getClassLoader());
}
public View getDisplay(String className) throws ErrorCodeException{
try {
Class c = classLoader.loadClass(className);
Method m = c.getMethod("getDisplay", Context.class);
View ret = (View) m.invoke(c.newInstance(), context);
return ret;
} catch (Exception e) {
e.printStackTrace();
throw new
ErrorCodeException(FormularErrorCode.NO_DISPLAY_AVAILABLE_FOR_FORMULAR);
}
}
}
, जब बंदरगाह के लिए हनीकोम्ब के लिए इस एप्लिकेशन की कोशिश कर रहा है (क्योंकि इस एप्लिकेशन के लिए वास्तविक लक्ष्य गोलियाँ कर रहे हैं) DexClassLoader एक अपवाद फेंकता ऐसा लगता है कि DexClassLoader 212 पैरामीटर (dexOutputDir) को संदर्भ.getFilesDir() के मान के रूप में अनदेखा करता है। मेरे उदाहरण में getAbsolutePath() प्राप्त करें "/ data/data/ at.mSystem.client/files"।
क्या आपके पास कोई उपाय है कि इसे कैसे हल किया जाए? या यह किसी प्रकार का हनीकॉम बग है?
धन्यवाद,
रोलाण्ड
मेरे पास कोई जवाब नहीं है, लेकिन सिर्फ आपको यह बताना चाहता था कि मुझे एक ही समस्या का सामना करना पड़ रहा है। – gotosleep
मैंने एंड्रॉइड के इश्यू ट्रैकर पर टिकट खोला: http://code.google.com/p/android/issues/detail?id=15893 – gotosleep
उसी दिन आपने इसे दायर किया, Google के किसी ने कहा "हाँ, आंतरिक बग 3439372. अनुसूचित हनीकॉम की आगामी रखरखाव रिलीज के लिए " –