【问题标题】:How to set source version of Java library in Android Studio project如何在 Android Studio 项目中设置 Java 库的源版本
【发布时间】:2015-08-07 05:36:54
【问题描述】:

我将一个 Android 项目拆分为 纯 Java 库和 Android 应用程序。我正在使用Gradle Retrolambda,所以我可以编写 Java 8 代码。

Android Studio 1.3 可以正确识别我设置为 JavaVersion.VERSION_1_8 的 Android 模块中的 android.compileOptions.sourceCompatibility

现在我想让 Android Studio 实现 Java 模块也是 Java 8。我尝试过(在 Gradle 脚本的根目录中,apply plugin 'java' 之后:

  1. sourceCompatibility = 1.8 但不起作用。 Gradle 正确编译,但 Android Studio 显示警告(“未使用分配”)并假定为 Java 6。

  2. sourceCompatibility 1.8 无法编译。

如何在不借助“设置源版本”快速修复的情况下让 Android Studio 识别这一点?还是暂时没有实现?

编辑

澄清一下,整个项目确实使用./gradlew assembleDebug 编译。问题在于 Android Studio 源代码突出显示。

我的Java模块build.gradle如下:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'me.tatarka:gradle-retrolambda:3.2.0'
    }
}

repositories {
    jcenter()
    mavenCentral()
}

apply plugin: 'java'
apply plugin: 'me.tatarka.retrolambda'

sourceCompatibility = JavaVersion.VERSION_1_8

dependencies {
    compile 'io.reactivex:rxjava:1.0.12'
    compile 'io.reactivex:rxjava-string:1.0.0'

    compile 'joda-time:joda-time:2.8.1'

    testCompile 'junit:junit:4.12'
}

retrolambda {
    jdk System.getenv("JAVA_HOME")
    defaultMethods true
    incremental false
}

这就是 Android Studio 给我的:

【问题讨论】:

    标签: java android android-studio gradle java-8


    【解决方案1】:

    在您的 java 模块 build.gradle 中编写如下代码:

        buildscript {
        repositories {
            mavenLocal()
            mavenCentral()
        }
    
        dependencies {
            classpath "me.tatarka:gradle-retrolambda:3.2.0"
        }
    }
    
    apply plugin: 'java'
    apply plugin: 'me.tatarka.retrolambda'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
    
    
    }
    
    retrolambda {
        jdk System.getenv("JAVA8_HOME")
        defaultMethods true
        incremental false
    }
    

    【讨论】:

    • 谢谢,但它已经在 Android 模块中工作了。我有一个正在使用的纯 Java 模块。
    • 我的项目已经编译(我几乎有那个代码); Android Studio 语法高亮认为有问题。
    • @ThorinII 从您的 java 模块中删除 sourceCompatibility = JavaVersion.VERSION_1_8。其次忽略java模块中的错误。我也一样,但不要担心。将sourceCompatibility = JavaVersion.VERSION_1_8 添加到您的主应用程序 build.gradle 文件中。完成这些更改后,请清理并重建。
    • @ThorinII 如果问题已解决,请接受答案:)
    【解决方案2】:

    Android Studio 似乎还没有处理这个问题(感谢@Anand Singh),所以您需要应用快速修复。

    【讨论】:

    • 抱歉,您的快速解决方法是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 2020-03-07
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    相关资源
    最近更新 更多