java - 为什么 Java 11 在 Android Studio 中给出 TaskExecutionException?

标签 java android android-studio

因此,我正在从事一个大型现有公司项目,其中有些东西是旧的/已弃用的,我正在尝试逐步改进它。

现在我正在尝试将 JDK 版本从 Java 1.8 更新到 Java 11。所以我从 Android Studio 首选项设置中进行了更改。

我也做了这个改变:https://developer.android.com/studio/releases/gradle-plugin#java-11

关于我的项目:

targetSDK版本:30

Android Studio:最新的稳定版本

项目编码:50% 代码 Java 和 50% 代码 Kotlin

因此,当我进行上述 2 项更改并同步项目时,它已成功同步,当我尝试运行此程序时,出现此异常。

java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
    at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3137)
    at java.base/java.lang.Class.getConstructor0(Class.java:3342)
    at java.base/java.lang.Class.newInstance(Class.java:556)

Execution failed for task ':app:kaptPlaystoreDebugKotlin'.
> Internal compiler error. See log for more details

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:kaptPlaystoreDebugKotlin'

注意:playstoreDebug 是构建变体名称。

最佳答案

回答:从 java8 升级到 java11 后,一些库已被删除。如果要使用它们,则需要将它们作为依赖项专门添加。

这个问题已经有人回答了:

javax.xml.bind.JAXBException Implementation of JAXB-API has not been found on module path or classpath

Replacements for deprecated JPMS modules with Java EE APIs

将这些依赖项添加到您的 pom/gradle 中:

Gradle :

compile('javax.xml.bind:jaxb-api:2.3.0')
compile('javax.activation:activation:1.1')
compile('org.glassfish.jaxb:jaxb-runtime:2.3.0')

代码:

<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0-b170201.1204</version>
</dependency>

<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime -->
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.0-b170127.1453</version>
</dependency>

关于java - 为什么 Java 11 在 Android Studio 中给出 TaskExecutionException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69286808/

相关文章:

android - 关于 Android Studio 中 calabash-android 支持的问题 : Ruby, Editing features and steps, Launching tests

java - 如何下载Android Studio的包?

java - 生成 PNG 响应时出现错误 406 Not Acceptable

java - 我试图使用 ID 从文本文件中搜索特定数据

java - 单线程程序与多线程程序(测量耗时)

java - 应用程序启动时无法获取位置

android - 应用程序收到短信后如何调用 Activity ?

android - BottomSheetBehavior启用拖动到顶部

android - 是否可以从 ContentProvider bulkInsert 获取最后的 "N"ID?

java - 使用Java Script从URL打开 Intent 不适用于生产-DeepLink