有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

libGDX设置允许我使用java8,它在Android中崩溃

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

我使用libGDX's setup创建了一个项目,然后将其导入到Android Studio。我不知道^{}接口只对Java8可用,并在核心模块中使用了它,据我所知,它编译成一个库,供所有安卓/html/desktop/ios版本的游戏共享。桌面版运行良好(我安装了Java8),但是我的安卓应用程序由于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) 个答案

  1. # 1 楼答案

    我认为您需要在gradle中添加带有sourceCompatibilitytargetCompatibility属性,以针对您的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以了解有关setjava编译版本gradle的更多信息