轉載請注明出處: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版本環境下有些功能還不支持,安裝配置環境時最好是選擇穩定成熟的。