2015-12-08 29 views
6

我是java/android新手,所以我希望這是一個非常容易解決的問題。libGDX安裝程序允許我使用在Android中崩潰的Java 8

我用libGDX's setup創建了一個項目,然後導入到了Android Studio。我不知道Supplier接口僅適用於Java 8,並在核心模塊中使用它,據我瞭解,它編譯成一個庫,由所有android/html/desktop/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"> 

而且,這裏是根build.gradle文件core部分:

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


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

所以,我應該怎麼改變,以防止它讓我在我的核心項目中使用Java 8?

回答

1

我認爲你需要添加targetCompatibility屬性與sourceCompatibility在gradle中,目標是你的java版本。

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

還需要檢查在gradle.properties文件與版本的項目是使用java默認路徑。

您需要檢查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的更多信息。

相關問題