我有
Android gradle项目,它包含主模块和纯java库. java库依赖于jar文件(此处显示Gson仅用于演示目的):
该项目编译良好,但当我尝试运行它时,它失败了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并在活动中引入依赖Gson依赖,它就可以工作.
app / build.gradle依赖项:
dependencies {
compile project(':javalib')
}
javalib /的build.gradle:
apply plugin: 'java'
dependencies {
compile files('libs/gson-2.2.4.jar')
}
MainActivity的onCreate(内部应用程序):
@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设备上运行我的应用程序时,在日志消息中发现了缺少的依赖关系.