我将另一个项目中自己创建的jar作为库导入到我的另一个项目中。当我更改该项目中的代码并导出新的jar来替换旧的jar时,我的应用程序无法运行。我只收到以下错误:
我尝试过删除、添加和添加依赖项、添加库,但似乎没有任何效果。我也进行了清理构建和重建。
我将另一个项目中自己创建的jar作为库导入到我的另一个项目中。当我更改该项目中的代码并导出新的jar来替换旧的jar时,我的应用程序无法运行。我只收到以下错误:
我尝试过删除、添加和添加依赖项、添加库,但似乎没有任何效果。我也进行了清理构建和重建。
我们在过去的项目中遇到过这个问题,当时我们的项目使用的Java版本与编译库所用的版本不同。魔数仅用于识别类文件,因此这里并非问题所在。问题是Java版本(0034.0000 == Java 8)。
最简单的解决方法是针对Java 6进行目标设置,这可能需要从代码中删除较新的语法。在我们的情况下,项目和库都是我们自己的,因此我们能够添加以下内容来强制使用我们所需的Java版本:
对于Android库,请将以下代码添加到“android”扩展对象中:
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_6
targetCompatibility JavaVersion.VERSION_1_6
}
...
}
对于Java库,将以下代码添加到“顶层”:
apply plugin: 'java'
version '1.8.1'
group 'com.yourcompany.package'
sourceCompatibility = JavaVersion.VERSION_1_6 //these two lines
targetCompatibility = JavaVersion.VERSION_1_6 //are the only ones that matter
添加:
sourceCompatibility = JavaVersion.VERSION_X_X
targetCompatibility = JavaVersion.VERSION_X_X
在 Android 项目 gradle 文件和 Java 库 gradle 文件中进行的操作对我有效。
抱歉,我想点赞,但是我的声望不够高。
虽然你的问题似乎已经解决了,但我在构建 developer.android.com 上的示例时遇到了类似的错误。如果对其他人有帮助,我通过将 JAVA_HOME 设置为适当的值来解决它。在我的情况下,它是:
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64