首页 > 解决方案 > 从 android java.lang.NoClassDefFoundError: javax/annotation/Generated 中的命令行获取错误

问题描述

从命令行构建android应用程序时,我收到错误任务':app:compileDebugJavaWithJavac'的执行失败。java.lang.NoClassDefFoundError: javax/annotation/Generated

我在 android 应用程序中启用 dataBinding

符号:类 DataBindingComponent 位置:类 ActivityMainBinding /home/chetan/project/newGradle/app/build/generated/source/dataBinding/baseClasses/debug/com/sko/gradledemo/databinding/ActivityMainBinding.java:49:错误:找不到符号@Nullable DataBindingComponent 组件){

符号:类 DataBindingComponent 位置:类 ActivityMainBinding /home/chetan/project/newGradle/app/build/generated/source/dataBinding/baseClasses/debug/com/sko/gradledemo/databinding/ActivityMainBinding.java:60:错误:找不到符号@Nullable DataBindingComponent 组件){

符号:类 DataBindingComponent 位置:类 ActivityMainBinding 5 错误

FAILURE:构建失败并出现异常。出了什么问题:任务“:app:compileDebugJavaWithJavac”执行失败。java.lang.NoClassDefFoundError: javax/annotation/Generated

标签: androidandroid-databinding

解决方案


当我使用命令行时,我在我的项目中得到了这个,./gradlew :app:assembleDevDebug但在 Android Studio 中运行我的项目时没有。问题是注释处理重新查询(在您的情况下为 dataBinding )因依赖项而失败,该依赖项已在较新的 JDK 中删除。

我的问题归结为使用我的“系统”JDK 的 Gradle,它是openjdk version "13.0.1". 即使JAVA_HOME使用 JDK 8 设置为特定的,Gradle 也使用“系统”之一。这很容易发现使用./gradlew -v哪个打印JVM: 13.0.1 (Oracle Corporation 13.0.1+9)的 .

我通过将项目根目录中的 gradle.properties 文件中的 JDK 主目录设置为与 Android Studio 捆绑的 JDK 来解决此问题。

org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home

在此之后,项目使用命令行运行良好。希望它可以帮助别人。


推荐阅读