在Android Studio/Gradle项目中使用纯Java 8库模块

4

我有一个Android Studio项目,其中包含一个纯Java8库模块。以下是该库的完整gradle.build文件:

apply plugin: 'java-library'

dependencies {
    testImplementation 'junit:junit:4.12'
}

sourceCompatibility = "1.8"
targetCompatibility = "1.8"

代码已经经过测试并且运行良好。
我遇到的问题是,我构建了该项目,然后尝试在另一个不使用Java 7(而是不使用Java 8)的Android项目中使用已构建的.jar文件。显然,代码无法工作。但是,令我惊讶的是,并没有编译时错误表明库不兼容。相反,只有在调用运行时函数时才会注意到不兼容性。
我在编译Java模块方面做错了什么吗?还是预期的行为是你只会得到库不兼容的运行时错误?我期望编译时出现错误。
此外,请告诉我如何正确编译,以便我可以在Android Studio中获得编译时错误,指示库是使用较新的Java版本编译的。
为了完整起见,当我使用我的Java 8库模块时,我会收到以下运行时错误。
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/Base64;

我认为编译时不会检查库的兼容性。 - OneCricketeer
你只能在 Android SDK 版本大于等于 24 的设备上使用 1.8 API:https://developer.android.com/studio/write/java8-support.html - Kirill
我不认为这是问题所在。抛出错误的应用程序具有“minSdkVersion 24 targetSdkVersion 26”,我已经在Android 7.1.1模拟器上进行了测试。它在这些条件下抛出上述错误。 - bremen_matt
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接