2016-04-12 20 views
1

Ich versuche, eine Klassendatei von einem Server zu laden und instatiante sie mit verschiedenen Klassenladeprogrammen, aber ohne Erfolg.Die Klasse kann nicht mit DexClassLoader, URLClassLoader oder PathClassLoader geladen werden

Ich versuchte DexClassLoader, URLClassLoader und PathClassLoader. Was auch immer ich tue, das einzige, was ich bekomme, ist eine ClassNotFoundException von loadClass Methode.

Das erste, was ich tue, ist zum Download:

  • jar-Datei, die die Klassendatei und die Sex-Datei
  • JAR-Datei enthält, die die Klassendatei enthält, aber keine Sex-Datei
  • die nackte Klassendatei

Und speichern Sie es im privaten Speicherordner der Anwendung. Dann versuche ich die Klasse mit einem der ClassLoader Implementierungen oben verursacht in erwähnt zu laden:

Error: java.lang.ClassNotFoundException: Didn't find class "FormTestView" on path: DexPathList[[zip file "/data/data/[PACKAGE_NAME]/app_test_folder/test.jar"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]

Jede Idee?

+0

Ich bekomme den gleichen Fehler mit 'unfähig, Klasse com.android.build.gradle.internal.NdkHandler zu laden. Haben Sie Ihr Problem jemals gelöst? –

+0

Verwenden Sie die statische Methode ClassLoader.getSystemClassLoader()? Versuchen Sie, die Methode getClassLoader aus einer Context-Instanz zu verwenden –

Antwort

0

Haben Sie Ihre .jar-Datei mit dem DX-Tool in Android-SDKS/Build-Tools konvertieren?

Wenn Sie nicht, dass versucht haben, verwenden Sie diesen Befehl:

./dx --dex --output yourJarDexConverted.jar yourJar.jar 

Die resultierende yourJarDexConverted.jar Datei classes.dex enthält, ist eine verschlüsselte Datei einschließlich aller Java-Klassen durch die Anwendung als Glas verteilt benötigt.