libGDX设置允许我使用在Android

时间:2015-12-08 00:00:32

标签: java android android-studio gradle libgdx

我是java / android的新手,所以我希望这很容易解决。

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

如果我尝试在我的Android模块中使用Supplier,它甚至不允许我导入该类,因此它知道它不支持该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"
}

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

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

<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">

此外,这是根core文件中的build.gradle部分:

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


    dependencies {
        compile "com.badlogicgames.gdx:gdx:$gdxVersion"
    }
}

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

1 个答案:

答案 0 :(得分:1)

我认为您需要在gradle中添加targetCompatibility属性sourceCompatibility以定位java版本。

    allprojects {
    apply plugin: 'java'
    sourceCompatibility = 1.6
    targetCompatibility = 1.6
}

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

您需要检查Can’t build Java 1.8 even with proper Java version in useGradle finds wrong JAVA_HOME even though it's correctly set,以便更好地了解set java编译版本gradle。

相关问题