Mos*_*atz 10 android jaxb gradle java-11
我正在使用 Android 数据绑定,虽然事情很简单,但效果很好。然而,一旦我添加了一个BindingAdapter注释,我的项目就停止在 Android Studio 中构建并出现错误Execution failed for task ':app:compileSaferesourceDebugJavaWithJavac',但它没有给我更多细节。gradlew build在命令行上运行显示实际错误是java.lang.ClassNotFoundException: javax.xml.bind.JAXBException. 这是有道理的,因为这台开发机器只安装了 Java 11,没有安装 Java 8。
我找到了这个答案,它说要向 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"
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道在哪里添加它们。将它们作为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"
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试将它们添加到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"
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用 Java 8 来构建此代码,但我真的不想处理多个 Java 版本,而且我还有其他需要 Java 11 的项目。
在 gradle 配置中是否有一个地方可以放置这些构建依赖项以使它们工作?
注意:注释要求提供数据绑定版本,该版本不再相关,因为数据绑定现在是内置的并且没有单独的版本号。
经过广泛的测试,很明显,Java 版本是唯一在这里产生任何区别的东西。
Mos*_*atz 10
更新截至 2020 年 7 月 21 日,Android 错误跟踪器现在声明:
Studio 还将从 4.2 开始使用 JDK 11,大约需要 1 到 2 个月。
截至 2019 年 3月 7 日,Android Bug Tracker 上的一名 Android 项目成员表示:
Android Studio 及其工具不支持 Java 11。
| 归档时间: |
|
| 查看次数: |
4777 次 |
| 最近记录: |