libGDX设置允许我使用java8,它在Android中崩溃
我是java/安卓新手,所以我希望这是一个很容易解决的问题
我使用libGDX's setup创建了一个项目,然后将其导入到Android Studio。我不知道^{NoClassDefFoundError
错误而崩溃(顺便说一句,错误消息显示的是我编写的类的名称,而不是Supplier
,但是当我删除对Supplier
的所有引用并在添加它们时返回时,错误就消失了,因此错误消息显然没有显示实际的问题类)
如果我尝试在我的安卓模块中使用Supplier
,它甚至不允许我导入该类,因此它知道它不支持该Java版本,但它很乐意让我在没有任何警告的情况下在核心模块中使用它。我确信删除对Supplier
的引用可以解决这个问题,但是如果我不小心使用了Java8的任何特性,这个修复可能会在以后导致运行时错误,所以这不是一个解决问题的好方法
我不知道在这个项目的什么地方设置了Java8,而且似乎有很多。格拉德尔。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"
}
Android studio将sourceCompatibility = 1.6
线显示为灰色,当我将鼠标悬停在上面时,会显示“未使用分配”。所以这可能是问题的一部分
我的core.iml
文件也包含这一行:
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
另外,下面是根build.gradle
文件中的core
部分:
project(":core") {
apply plugin: "java"
dependencies {
compile "com.badlogicgames.gdx:gdx:$gdxVersion"
}
}
那么,我应该做些什么来防止它让我在我的核心项目中使用Java8呢
# 1 楼答案
我认为您需要在gradle中添加带有
sourceCompatibility
的targetCompatibility
属性,以针对您的java
版本还需要检查
java
文件中的gradle.properties
默认路径以及项目使用的版本您需要检查Can’t build Java 1.8 even with proper Java version in use和Gradle finds wrong JAVA_HOME even though it's correctly set以了解有关set
java
编译版本gradle的更多信息