【发布时间】:2015-10-15 14:45:19
【问题描述】:
我有一个“java 模块”,其中包含一些 jar 文件 (lib.jar)。它们使用 fileTree 方法包含在我的模块 build.gradle 文件中。
compile fileTree(dir: 'libs', include: ['*.jar'])
当我在主应用程序中包含“java 模块”作为依赖项时,当模块尝试访问 lib.jar 中的类时,我总是得到 ClassDefNotFoundException。
以下是项目层次结构:
|--mylibrary (java module)
|
--libs/
|
--lib.jar
--build.gradle
|--app
|
--src/
--libs/
--build.gradle
仅当模块是“java 模块”时才会出现此问题。我尝试使用“android 库模块”作为依赖项,并且 jar 包含在内。我错过了什么?
Java 模块 build.gradle:
apply plugin: 'java'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
应用构建.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.macolighting.mncp.myapplication"
minSdkVersion 21
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':mylibrary')
}
【问题讨论】:
-
只需将
apply plugin: 'com.android.library'更改为您的模块 gradle -
在你的 gradle 依赖中添加编译文件('libs/yourJar.jar')
-
对不起,我应该更清楚。我希望“Java 模块”严格是 Java 代码并且具有零 android 依赖项。如果我将插件从“java”更改为“com.android.library”,我将需要一个 android manifest 等。
-
另外,编译文件('libs.yourJar.jar')也不能解决问题。
标签: java android android-studio gradle