libGDX设置允许我使用在Android中崩溃的Java 8

Jua*_*uan 6 java android gradle libgdx android-studio

我是java/android的新手,所以我希望这是一个很容易解决的问题.

我已经使用libGDX的设置创建了一个项目,然后我将其导入Android Studio.我不知道Supplier接口只适用于Java 8,并在核心模块中使用它,据我所知,它编译成一个由所有android/html/desktop/ios版本的游戏共享的库.桌面版本运行正常(我安装了Java 8),但我的Android应用程序崩溃了一个NoClassDefFoundError错误(BTW,错误消息显示我写的类的名称,而不是Supplier,但错误消失了,一旦我删除每一个Supplier当我添加它们时引用并返回,所以显然错误消息不显示实际的问题类).

如果我尝试Supplier在我的android模块中使用它,它甚至不会让我导入该类,因此它知道它不支持该Java版本,但它很高兴让我在核心模块中使用它而没有任何警告.我确定删除引用Supplier将解决问题,但如果我无意中使用任何Java 8功能,此修复可能会导致运行时错误,因此不是解决问题的好方法.

我不知道项目在哪里设置使用Java 8,似乎有一堆.gradle,.xml和.iml文件显然都与配置有关.这是我build.gradle在核心模块中的文件:

apply plugin: "java"

sourceCompatibility = 1.6
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'

sourceSets.main.java.srcDirs = [ "src/" ]


eclipse.project {
    name = appName + "-core"
}
Run Code Online (Sandbox Code Playgroud)

sourceCompatibility = 1.6当我将鼠标悬停在它上面时,Android工作室显示该行显示为灰色并显示"未使用分配".所以这可能是问题的一部分.

我的core.iml文件也包含这一行:

<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
Run Code Online (Sandbox Code Playgroud)

另外,这是corebuild.gradle文件中的部分:

project(":core") {
    apply plugin: "java"


    dependencies {
        compile "com.badlogicgames.gdx:gdx:$gdxVersion"
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,我应该改变什么来阻止它让我在我的核心项目中使用Java 8?

pRa*_*NaY 2

我认为你需要在 gradle 中添加targetCompatibility属性来定位你的sourceCompatibilityjava版本。

\n\n
    allprojects {\n    apply plugin: \'java\'\n    sourceCompatibility = 1.6\n    targetCompatibility = 1.6\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

还需要检查项目使用的版本的文件java中的默认路径。gradle.properties

\n\n

即使使用正确的 Java 版本,您也需要检查Can\xe2\x80\x99t 构建 Java 1.8 ,并且Gradle 发现错误的 JAVA_HOME,即使它设置正确,以获取有关设置java编译版本 gradle 的更多信息。

\n