Android Studio2.1.2 Java8環境下引用Java Library編譯出錯


轉載請注明出處:http://www.cnblogs.com/LT5505/p/5685242.html

問題:在Android Studio2.1.2+Java8的環境下,引用Java Library,同時引用了dataBinding處於enable狀態,會導致編譯出錯,提示“This is caused by library dependencies that have been compiled using Java 8 or above.”,如下圖所示:

解決步驟

1、在所有的module的build.gradle文件中添加如下代碼:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

再次編譯運行,發現還是報同樣的錯誤,所以肯定還要修改其他的地方。

2、覺得設置Java版本為1.7行不通,就直接把版本改為了1.8

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

結果報出錯誤需要將Jack設置為enable狀態,如下:

我在網上百度了資料,修改主module的build.gradle文件,添加代碼

defaultConfig {
    jackOptions {
        enabled true
    }
}

再次編譯,發現我的情況還真是特殊,還是報錯了,因為我使用了databinding,

3、最后還是修改回了,設置Java版本為1.7,但是這次除了在module的build.gradle文件中設置Java的版本,同時在引用的Java Library的build.gradle文件中添加了如下

“sourceCompatibility = '1.7'”和“targetCompatibility = '1.7'”,代碼如下
apply plugin: 'java'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    sourceCompatibility = '1.7'
    targetCompatibility = '1.7'
}

終於編譯成功了。

后續:當然網上說也可以同時安裝Java1.7和Java1.8,我個人覺得裝兩個版本也挺麻煩的,所以還是配置下比較方便。

總結:

Java 1.8版本環境下有些功能還不支持,安裝配置環境時最好是選擇穩定成熟的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM