在Java 11上编译Android数据绑定时,JAXB依赖关系放在哪里?
我正在使用Android数据绑定,虽然事情很简单,但它工作得很好。然而,一旦我添加了注释,我的项目就停止在Android Studio中构建,出现了一个错误,任务执行失败:app:compilesArferSourceDebugJavaWithJavaC',但它没有给我更多的细节。在命令行上运行在Java 11上编译Android数据绑定时,JAXB依赖关系放在哪里?,android,gradle,jaxb,java-11,Android,Gradle,Jaxb,Java 11,我正在使用Android数据绑定,虽然事情很简单,但它工作得很好。然而,一旦我添加了注释,我的项目就停止在Android Studio中构建,出现了一个错误,任务执行失败:app:compilesArferSourceDebugJavaWithJavaC',但它没有给我更多的细节。在命令行上运行gradlew build表明实际错误是java.lang.ClassNotFoundException:javax.xml.bind.jaxbeexception。这是有道理的,因为这个开发机器只安装了
gradlew build
表明实际错误是java.lang.ClassNotFoundException:javax.xml.bind.jaxbeexception
。这是有道理的,因为这个开发机器只安装了Java11,而没有安装Java8
我发现,这表示要向gradle添加以下依赖项:
implementation "javax.xml.bind:jaxb-api:2.2.11"
implementation "com.sun.xml.bind:jaxb-core:2.2.11"
implementation "com.sun.xml.bind:jaxb-impl:2.2.11"
implementation "javax.activation:activation:1.1.1"
我的问题是,我不知道在哪里添加它们。将它们作为implementation
依赖项添加到app/build.gradle
不起作用,因为JAXB是构建工具的依赖项,而不是我的应用程序本身的依赖项
我也尝试将它们添加为buildscript.dependencies
,但也不起作用:
buildscript {
repositories {
google()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "javax.xml.bind:jaxb-api:2.3.1"
classpath "com.sun.xml.bind:jaxb-core:2.3.0"
classpath "com.sun.xml.bind:jaxb-impl:2.3.1"
classpath "javax.activation:activation:1.1.1"
}
}
我还尝试将它们作为buildscript.dependencies
添加到项目根build.gradle
文件中,但这也没有帮助:
buildscript {
repositories {
google()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "javax.xml.bind:jaxb-api:2.3.1"
classpath "com.sun.xml.bind:jaxb-core:2.3.0"
classpath "com.sun.xml.bind:jaxb-impl:2.3.1"
classpath "javax.activation:activation:1.1.1"
}
}
我知道我可以使用Java8来构建这段代码,但我真的不想处理多个Java版本,我还有其他需要Java11的项目
在gradle配置中是否有一个地方可以放置这些构建依赖项以使它们工作
我测试的配置:
- 操作系统:在Windows 10和Windows Server 2016上测试
- 构建环境:在AndroidStudio 3.4.1、AndroidStudio 3.5.0-beta04中进行测试,并在命令行上使用Gradle包装器
- Android Gradle插件:使用3.4.1和3.5.0-beta04进行测试
- Android构建工具:使用28.0.3和29.0.0进行测试
- Java 11.0.1 x64
- Java 1.8.0_212 x64
经过广泛的测试,很明显,Java版本是唯一有区别的东西。更新自2020-07-21起,Android bug追踪器: Studio还将从4.2版开始使用JDK 11,大约需要1到2个月
根据截至2019-03-07年Android项目的一名成员的说法: Android studio及其工具不支持Java 11
相关:如果在Android中使用带有
com.sun
的库,请仔细检查其兼容性。@morrisonchange它一点也不相关。这个问题是关于在我的应用程序中使用JAXB(我没有这样做),这个问题是关于Android构建工具本身使用JAXB的事实。然后应该指定您正在使用的操作系统、Android Studio的版本、数据绑定库的版本、Java 11的版本,以及相关的,可能还有注释尝试的代码片段。您可能在工具中发现了一个bug。@MosheKatz找到解决方法了吗?我也遇到了类似的情况,不想为此安装Java-8。Java-11的其他功能都可以正常工作。