当前位置: 首页 > 知识库问答 >
问题:

当前的 JDK 版本 1.8 存在一个阻止 Room 进行增量操作的错误

赫连彬炳
2023-03-14

我们正在尝试改进我们的多模块Android应用程序的构建时间,并且我们已经达到了尝试启用增量KAPT注释处理编译的地步。

    < li>Android Studio版本:v3.5.2 < li >房间版本:v2.2.1 < li>Gradle版本:v5.4.6 < li>Android Gradle插件版本:v3.5.2 < li>Kotlin版本:v1.3.50

gradle.properties:

org.gradle.daemon=true
org.gradle.caching=true
org.gradle.parallel=true

kapt.incremental.apt=true
kapt.use.worker.api=true
kapt.include.compile.classpath=false

android.databinding.incremental=true

build.gradle(在使用Room的每个模块内):

kapt {
    arguments {
        arg("room.incremental", "true")
    }
}

然而,在尝试使用< code > gradlew汇编-扫描命令对构建时间进行基准测试时,Gradle抛出了以下错误:

warning: Current JDK version 1.8.0_201-b09 has a bug (https://bugs.openjdk.java.net/browse/JDK-8007720) that prevents Room from being incremental. Consider using JDK 11+ or the embedded JDK shipped with Android Studio 3.5+.
ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1
[WARN] Incremental annotation processing requested, but support is disabled because the following processors are not incremental: androidx.room.RoomProcessor (DYNAMIC).

我曾尝试在项目结构窗口中将Open JDK 11设置为项目的默认JDK,但它不起作用,它抱怨它不是JDK 8。您知道这个设置有什么问题吗?

共有3个答案

长孙德惠
2023-03-14

转到项目结构

禹昆
2023-03-14

编译时,它给我看了一个警告:

当前的 JDK 版本有一个错误(https://bugs.openjdk.java.net/browse/JDK-8007720),该错误阻止 Room 进行增量。考虑使用 JDK 11 或 Android Studio 3.5 附带的嵌入式 JDK。注意: 1 编写生成的AppGlideModule与:[][WARN]增量注释处理请求,但支持被禁用,因为以下处理器不是增量的:androidx.room.RoomProcessor(动态)。

然后我从甲骨文网站下载了JDK 8 (8u261)(它需要注册,所以寻找直接链接)。

安装后,将<code>JAVA_HOME

然后重新编译应用程序。甚至不需要重新启动。

更新

一个月后,我再次看到同样的警告。然后阅读接受的答案,发现Java嵌入了Android Studio:C:\Program Files\Android\Android Studio\jre

文件

黎苑博
2023-03-14

您将需要使用嵌入AS的JDK来解决此问题。确保使用上面的 AS 3.5。关于项目结构 -

如果从终端运行,请确保$JAVA_HOME包含正确的路径。

我猜Android studio还不支持JDK 11。我还尝试使用最新的JDK 8(231,它是3.5使用202),但它导致了这个问题。

 类似资料:
  • 所以我更改了我的依赖项,如下所示: 但我不知道从哪里可以把1.6级改成1.8级... 当我编译应用程序时,我遇到了这个错误: 提前致谢:)

  • 问题内容: 我使用Android Studio,最近收到错误消息: 错误:任务’:app:compileDebugJavaWithJavac’的执行失败。compileSdkVersion’android-24’需要JDK 1.8或更高版本进行编译。 但是我已经安装了JDK 1.8: :\ Users ..> java -version Java版本“ 1.8.0_91” Java(TM)SE运行

  • 我有一个Xamarin表单项目,我正试图通过与VST的持续集成与HockeyApps集成。我的应用程序使用Java1.8进行编译,并使用ProGuard压缩android apk文件。但是当java试图编译应用程序时,它发现安装的proguard版本与java 1.8不兼容。错误如下:。。。无法处理类[android/app/ActivityTracker.class]不支持的类版本号[52.0]

  • 问题内容: 我有一个像这样的表:例如,trans是表的名称 而且我必须更新Delta列。假设每月有一笔交易,则该值是同一帐户的当前行与同一帐户的先前行之差。这是一个可以生成增量值的虚拟sql 该查询的结果是 但是没有任何前一行的行的增量应该是其数量,例如 这些都是顺便说了。 请帮助我解决此查询。 问题答案: 这是您对原始查询进行的相应修改: 月比较从移动到,这使得一个差,并且被替换为。 脚本 的版

  • 我已经搜索了几种在Mac上更改JDK版本的方法。 我得到了 我如何在我的Mac上改变java版本。

  • 我正在使用intellij创建sbt跨编译平台项目,使用以下平台JVM、JS、NativeWin、NativeUbuntu、Android和共享scala代码。我的项目需要Java8,但似乎Android不适合Java8版本,因为我在sbt文件中为Android模块指定了1.7版本,如下所示: Android模块文件 项目设置: