【问题标题】:Android Studio: Jar files included within Java module aren't found at runtimeAndroid Studio:在运行时找不到包含在 Java 模块中的 Jar 文件
【发布时间】: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


【解决方案1】:

如果有人想知道我是如何解决这个问题的,我必须手动将 jar 依赖项提取到构建 jar 中。这有点hacky,但它有效。向谷歌提交了一个错误,希望他们能解决问题。 https://code.google.com/p/android/issues/detail?id=186012

apply plugin: 'java'

configurations {
    libDependency
}

jar {
    from {
        configurations.libDependency.collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
}

dependencies {
    FileTree libs = fileTree(dir: 'libs', include: '*.jar')
    libDependency libs
    compile libs
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 2017-01-28
    • 2013-06-08
    • 1970-01-01
    • 2016-08-19
    • 2017-08-11
    • 2011-09-18
    相关资源
    最近更新 更多