首页 > 解决方案 > .jar库到android studio项目的动态连接

问题描述

我需要使用此代码从“/data/data/project_name/files/dyn.jar”连接我的“dyn.jar”库(lib 是 java 语言,而不是 android)(文件肯定在那里):

lib位置的屏幕

Calculations c = new Calculations();
String jarPath = getFilesDir().getPath() + "/dyn.jar";

final DexClassLoader classLoader = new DexClassLoader(jarPath, getCacheDir().getAbsolutePath(), null, this.getClass().getClassLoader());

try {
    classLoader.loadClass("com.example.dyn.ExtendedCalculations");
} catch (Exception e) {
    e.printStackTrace();
}

但我每次都得到这个例外。我不明白我的代码有什么问题。

W/System.err: java.lang.ClassNotFoundException: Didn't find class "com.example.dyn.ExtendedCalculations" on path: DexPathList[[zip file "/data/user/0/com.example.calculator/files/dyn.jar"],nativeLibraryDirectories=[/system/lib, /system_ext/lib]]
W/System.err:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at com.example.calculator.MainActivity.onCreate(MainActivity.java:30)
        at android.app.Activity.performCreate(Activity.java:8000)
        at android.app.Activity.performCreate(Activity.java:7984)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
W/System.err:     at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
        Suppressed: java.io.IOException: No original dex files found for dex location (x86) /data/user/0/com.example.calculator/files/dyn.jar
        at dalvik.system.DexFile.openDexFileNative(Native Method)
        at dalvik.system.DexFile.openDexFile(DexFile.java:367)
        at dalvik.system.DexFile.<init>(DexFile.java:109)
        at dalvik.system.DexFile.<init>(DexFile.java:82)
        at dalvik.system.DexPathList.loadDexFile(DexPathList.java:439)
        at dalvik.system.DexPathList.makeDexElements(DexPathList.java:398)
        at dalvik.system.DexPathList.<init>(DexPathList.java:166)
        at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:129)
        at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:87)
        at dalvik.system.DexClassLoader.<init>(DexClassLoader.java:55)
        at com.example.calculator.MainActivity.onCreate(MainActivity.java:27)
            ... 15 more

标签: javaandroid-studiojar

解决方案


推荐阅读