从android java.lang.NoClassDefFoundError中的命令行获取错误:javax / annotation / Generated

时间:2019-01-10 10:27:19

标签: android android-databinding

从命令行构建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 /生成/source/dataBinding/baseClasses/debug/com/sko/gradledemo/databinding/ActivityMainBinding.java:60:错误:找不到符号       @Nullable DataBindingComponent组件){

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

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

1 个答案:

答案 0 :(得分:2)

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

我的问题归结为使用openjdk version "13.0.1"的“系统” JDK到Gradle。即使使用JDK 8将JAVA_HOME设置为特定的值,Gradle仍在使用“系统”值。使用打印./gradlew -v的{​​{1}}很容易发现。

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

JVM: 13.0.1 (Oracle Corporation 13.0.1+9)

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