我是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" }
sourceCompatibility = 1.6
当我将鼠标悬停在它上面时,Android工作室显示该行显示为灰色并显示"未使用分配".所以这可能是问题的一部分.
我的core.iml
文件也包含这一行:
另外,这是core
根build.gradle
文件中的部分:
project(":core") { apply plugin: "java" dependencies { compile "com.badlogicgames.gdx:gdx:$gdxVersion" } }
那么,我应该改变什么来阻止它让我在我的核心项目中使用Java 8?