Getting error from comand line in android java.lang.NoClassDefFoundError: javax/annotation/Generated

Getting error from comand line in android java.lang.NoClassDefFoundError: javax/annotation/Generated

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

我在 android 应用程序中启用数据绑定

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

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

符号:classDataBindingComponent 位置:class ActivityMainBinding 5 个错误

失败:构建失败,出现异常。 什么地方出了错: 任务 ':app:compileDebugJavaWithJavac' 执行失败。 java.lang.NoClassDefFoundError: javax/annotation/Generated

我在使用命令行 ./gradlew :app:assembleDevDebug 时在我的项目中得到了这个,但在 运行 在 Android 工作室中设置我的项目时却没有。问题是注释处理重新查询(在您的情况下是数据绑定)失败,并且依赖项在较新的 JDKs 中被删除。

我的问题归结为 Gradle 使用我的 "system" JDK,即 openjdk version "13.0.1"。即使将 JAVA_HOME 设置为带有 JDK 8 的特定值,Gradle 也使用 "system" 之一。使用打印 JVM: 13.0.1 (Oracle Corporation 13.0.1+9)./gradlew -v 很容易发现这一点。

我通过将项目根目录中 gradle.properties 文件中的 JDK 主页设置为与 Android Studio 捆绑在一起的 JDK 解决了这个问题。

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

此后项目 运行 使用命令行正常。希望它能帮助别人。