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)
另外,这是core
根build.gradle
文件中的部分:
project(":core") {
apply plugin: "java"
dependencies {
compile "com.badlogicgames.gdx:gdx:$gdxVersion"
}
}
Run Code Online (Sandbox Code Playgroud)
那么,我应该改变什么来阻止它让我在我的核心项目中使用Java 8?
我认为你需要在 gradle 中添加targetCompatibility
属性来定位你的sourceCompatibility
java
版本。
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
即使使用正确的 Java 版本,您也需要检查Can\xe2\x80\x99t 构建 Java 1.8 ,并且Gradle 发现错误的 JAVA_HOME,即使它设置正确,以获取有关设置java
编译版本 gradle 的更多信息。
归档时间: |
|
查看次数: |
1452 次 |
最近记录: |