gpt4 book ai didi

java - 将库构建为jar文件

转载 作者:行者123 更新时间:2023-12-03 06:23:38 25 4
gpt4 key购买 nike

我有一个gradle项目。
此项目取决于android sdk。
现在,我想为此项目生成一个jar库,以便在其他android应用程序中使用。

我有这样的gradle文件:

apply plugin: 'java'

dependencies {
Properties props = new Properties()
props.load(new FileInputStream("./local.properties"))
compile files(props.get("sdk.dir")+'/platforms/android-18/android.jar')
}

它可以编译并生成一个jar文件。我可以将其导入到我的android应用程序项目中(同时尝试了eclipse和android studio),并且ide可以从我的库中查看类并将其编译为apk。
(该库被标记为输出)。其他库(例如TestFlightLib.jar)可以正常工作。

问题出现在运行时,无法从我的库中找到类:
java.lang.NoClassDefFoundError: com/solvek/test/MyClass
at com.example.jartest.MainActivity.onCreate(MainActivity.java:29)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2293)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2389)
at android.app.ActivityThread.access$600(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5289)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.solvek.test.MyClass" on path: DexPathList[[zip file "/data/app/com.example.jartest-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.jartest-2, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)            

最佳答案

我通过使用“android-library” gradle插件而不是“java”解决了这一问题。它不会在运行时崩溃,但是IDE(Android Studio)无法识别我的库中的类(但是它可以正常运行)

我已经将这样的任务添加到gradle文件中:

task jar(type: Jar) {
from android.sourceSets.main.java
}

找到解决方案 here

关于java - 将库构建为jar文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19499275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com