【发布时间】:2014-04-17 03:09:27
【问题描述】:
在我的 Android 应用程序中,当执行引用依赖 .jar 中的代码的代码时,我会收到 java.lang.NoClassDefFoundError。我的项目包括一个 Android 模块以及一个仅限 java 的库模块,这是 jar 依赖项所在的位置。我正在使用 gradle 1.10 来构建项目。这是我的项目布局:
myProject
- app (Android)
- src
- build.gradle
- lib (java)
- src
- libs
- local-dependency.jar
- build.gradle
- build.gradle
- settings.gradle
主项目build.gradle 是空白的,而主项目settings.gradle 看起来像:
include ':app', ':lib'
Android 应用 build.gradle 看起来像:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.8.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "19.0.2"
defaultConfig {
minSdkVersion 18
targetSdkVersion 18
versionCode 1
versionName "1.0"
}
}
dependencies {
compile project(':lib')
}
图书馆build.gradle是:
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile <some-dependency-in-maven>
compile files('libs/local-dependency.jar')
}
一切编译和打包都没有错误,我在 IDE (IntelliJ 13) 中没有看到任何错误。出于某种原因,我的 local-dependency.jar 在 Android 编译期间没有被添加到 dex-ing 进程中。 lib 项目中指定的任何 maven 依赖项都可以添加到 Android .apk 中;这只是我的本地 jar 依赖项。我有什么遗漏吗?
谢谢!
【问题讨论】:
-
您可能还想尝试在 android 项目中包含依赖 jar 来看看是否可行。
-
嗯,是的,当我更改我的 Android 应用程序 build.gradle 依赖项部分以添加
compile files('../lib/libs/local-dependency.jar')时,它似乎有效。但是有没有办法让它工作而不必让 Android 应用程序 build.gradle 必须知道依赖项的依赖项?
标签: java android jar gradle android-gradle-plugin