gpt4 book ai didi

java - Android java模块 "jar"文件依赖问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:18 25 4
gpt4 key购买 nike

我有一个 Android gradle 项目,它由主模块和一个纯 java 库组成。 java 库依赖于一个 jar 文件(此处显示 Gson 仅用于演示目的):

tree structure

项目编译正常,但当我尝试运行它时失败并显示 NoClassDefFoundError:

java.lang.NoClassDefFoundError: com.google.gson.Gson
at com.example.JavaLibClass.javaMethod(JavaLibClass.java:7)
at com.denisk.deptest.MainActivity.onCreate(MainActivity.java:15)
at android.app.Activity.performCreate(Activity.java:5135)

如果我用常规 Maven 依赖项替换 jar 依赖项,它就可以工作。

如果我将 jar 依赖从 javalib 移动到 app 并在 Activity 中引入依赖 Gson 依赖,它有效。

app/build.gradle依赖:

dependencies {
compile project(':javalib')
}

javalib/build.gradle:

apply plugin: 'java'

dependencies {
compile files('libs/gson-2.2.4.jar')
}

MainActivityonCreate(在 app 内):

@Override
protected void onCreate(Bundle savedInstanceState) {

JavaLibClass javaLibClass = new JavaLibClass();
javaLibClass.javaMethod();

}

JavaLibClass(在 javalib 内):

public class JavaLibClass {
public void javaMethod() {
Gson gson = new Gson();
}
}

带有演示项目的 Github 存储库:

https://github.com/denisk20/android-gradle-dependency-test

我是做错了什么还是错误?


编辑 1:无论我是使用 Android Studio 还是使用纯 Gradle 进行构建都没有关系。

编辑 2:我已经用 AOSP 的 android gradle 插件 1.4.0-beta4 试过了 - 同样的错误。

最佳答案

加载失败的类可能缺少它自己的依赖项。令人恼火的是,Android 5.1 中的 VM 并没有告诉您这种依赖性是什么。我发现当我在装有 Dalvik VM 的较旧的 Android 2.3 设备上运行我的应用程序时,会在日志消息中识别出缺少的依赖项。

关于java - Android java模块 "jar"文件依赖问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32971696/

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