【问题标题】:Jdk version automatically resets to 1.7 in android studioandroid studio中jdk版本自动重置为1.7
【发布时间】:2016-08-07 16:28:30
【问题描述】:

我安装了 Android Studio,我同时拥有 Jdk 1.7 和 1.8。当我执行该应用程序时,它给了我一个错误,它需要使用 Jdk 1.8 运行。我进入 File>> 项目结构并将 jdk 版本的路径更改为 jdk 1.8 但是当我单击 OK 时,gradle 同步以 jdk 开始1.7 .现在当我再次打开项目结构时,JDK版本再次重置为1.7。

我的JAVA_HOME 系统变量设置为jdk 1.8 路径。我卸载了 Android Studio 并重新安装了它,但没有任何效果。

【问题讨论】:

  • Android 还不支持 Java 8。

标签: java android android-studio


【解决方案1】:

在您的 build.gradle 中还包括 compileOptions 标记以强制 JDK 1.8。

您还需要启用 Jack 编译器才能利用 Java 8 功能。

android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

在此处查看有关 Android 上可用的 Java 8 功能的 Google 页面:https://developer.android.com/preview/j8-jack.html

另外,请记住,在 Java 8 下,Jack 编译器不支持某些功能。最大的一个(至少对我来说)是带有注释处理器的 Transform API。如果您或您喜欢的库使用 Transform API,您可以禁用 Jack,并使用库来获取一些 Java 8 功能,例如 Retrolambda。

有关 RetroLambda 的详细信息,请参见此处:https://github.com/evant/gradle-retrolambda

【讨论】:

  • 我试过这个。但是当我运行应用程序时,gradle 需要永远构建。 gradle 控制台卡在 :app:compileDebugJavaWithJack
  • 然后在 12 分钟后我收到错误错误:任务':app:compileDebugJavaWithJack'的执行失败。 > java.lang.RuntimeException: java.lang.OutOfMemoryError: 超过 GC 开销限制
  • 这是杰克给你的。它仍处于测试阶段,而这正是我几个月前尝试它时发生的事情。我建议现在使用 3rd 方库来支持 Java 8 功能的移植,然后在黄金时间切换到 Jack。
猜你喜欢
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
  • 2015-08-18
  • 2018-01-23
  • 1970-01-01
  • 2015-07-16
  • 1970-01-01
相关资源
最近更新 更多