android - 从 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
解决方案
当我使用命令行时,我在我的项目中得到了这个,./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
在此之后,项目使用命令行运行良好。希望它可以帮助别人。
推荐阅读
- jenkins - BlueOcean 不要求我提供一些 jenkins 多分支参数
- c# - 如何将显式运算符转换为方法组?
- react-native - 如何在 react-native 中播放 base64 视频
- django - 在 Django 中使用 html 表单将数据存储到数据库
- unix - 使用 sed 替换所有出现的以 'xy' 开头且长度为 5 或更长的字符串
- mongoose-schema - Mongoose Schema 静态与方法
- ios - UIAlertController 在 iPad 上的行为怪异
- python - 如何创建函数以在 CSV 文件中进行搜索?
- c# - 图像未在 UWP 中从 Uri 转换为位图图像
- python - 如何从 html 源代码中具有相同属性集和相同层次结构的 2 个元素中抓取单个元素(使用 python 的美丽汤)