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版本环境下有些功能还不支持,安装配置环境时最好是选择稳定成熟的。

 

posted @ 2016-07-19 16:10  LT5505  阅读(8363)  评论(9编辑  收藏  举报