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

  • 相关阅读:
    python之简单爬虫
    python之正则表达式
    python之面向对象
    python之模块与包
    python之循环嵌套与算法
    linux shell实现从函数返回数组
    linux脚本实现数组值相加
    linux中使用函数输出
    linux shelll中显示的意义
    lsof命令
  • 原文地址:https://www.cnblogs.com/LT5505/p/5685242.html
Copyright © 2011-2022 走看看