【问题标题】:Gradle refresh in IntelliJ changes language level of modulesIntelliJ 中的 Gradle 刷新更改了模块的语言级别
【发布时间】:2016-04-18 14:19:44
【问题描述】:

我有一个 Gradle 项目,其中包含一个 Android 库模块和一个普通的旧 Java 模块。 (Android 库模块依赖于普通的 Java 模块。)

在 Android 库模块的 build.gradle 文件中,我有这个:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

在普通的旧 Java 模块的 build.gradle 文件中,我有这个:

compileJava {
    sourceCompatibility = "1.8"
    targetCompatibility = "1.8"
}

当我点击 IntelliJ IDEA 15 中的 Gradle 刷新按钮时,Android 模块的语言级别设置为 Java 8(如我所料),但 Java 模块的语言级别设置为 Java 1.6。 为什么会这样?IntelliJ 有没有办法在刷新时将 Java 模块的语言级别设置为 Java 8?

【问题讨论】:

    标签: java intellij-idea gradle intellij-15


    【解决方案1】:

    如果您使用新的Jack 编译器或Retrolambda 插件Gradle,则只能使用JavaVersion.VERSION_1_8

    所以你应该使用:

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    

    就 Intellij/Android Studio 语言设置而言:

    1. 文件 -> 项目结构:

    1. 您应该相应地设置项目语言设置:

    【讨论】:

    • 感谢您将 Android 模块的 Java 版本降至 1.7。 (我认为只要不使用 Java 1.8 语言功能,我就可以使用 Java 1.8 进行编译。)我将普通旧 Java 模块中的 Java 版本也删除到 1.7,现在 IntelliJ 将 Project Language Level 设置为 @项目中两个模块的 987654333@ 和Language level 每次我做一个新鲜的时候自动到7。奇怪为什么项目级别和模块级别的值不同,但它对我有用,所以我暂时保留它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2019-09-25
    • 2013-01-15
    • 2014-04-03
    相关资源
    最近更新 更多