相关疑难解决方法(0)

是否可以使用Java 8进行Android开发?

在网上搜索,目前尚不清楚Java 8是否支持Android开发.

在我下载/设置Java 8之前,有人可以在任何"官方"文档中指出我说Java 8是否支持Android开发.

java android java-8 android-gradle-plugin

594
推荐指数
12
解决办法
27万
查看次数

Gradle sourceCompatibility对子项目没有影响

我的机器上安装了Java 6和7.Gradle使用1.7(使用检查gradle -v).但我需要编译我的代码以与Java 1.6兼容.据我所知文档,我可以使用该sourceCompatibility属性(并间接targetCompatibility默认为 sourceCompatibility).

所以我将以下行添加到我的构建文件中(在根级别,而不是在任何闭包中):

sourceCompatibility = 1.6
Run Code Online (Sandbox Code Playgroud)

(可以肯定的是,我也在targetCompatibility = 1.6一些试验中添加了,但这不应该有所作为)

要检查结果是否与1.6实际兼容,我将生成的jar解压缩cdWEB-INF/classes文件夹中,并javap -verbose.class我遇到的第一个文件中使用.但无论我是设置目标兼容性还是我使用1.5而不是1.6或者我是否将其指定为string('1.6'),每次javap的结果是

minor version: 0
major version: 51
Run Code Online (Sandbox Code Playgroud)

Afaik这意味着它是Java 1.7字节码,这是错误的.

有什么想法sourceCompatibility- 设置不起作用?或者javap不是检查兼容性的正确方法?

更新: 是的,这实际上是一个多项目构建,但我只检查了一个子项目的构建结果.在这个子项目的构建文件中,我做了上述更改,以确保它们实际应用.另外,我在根项目的构建文件中添加了以下内容(如@Vidya所提议的那样):

allprojects {
    sourceCompatibility = 1.6
    targetCompatibility = 1.6
}
Run Code Online (Sandbox Code Playgroud)

但这也没有帮助.

更新2: 我在相关的build.gradle文件中使用此代码片段检查了sourceCompatibility的设置:

compileJava.doFirst {
    println "source compatibility " + sourceCompatibility
}
Run Code Online (Sandbox Code Playgroud)

它显示我的sourceCompatibility设置为1.7,虽然我试图将其设置为1.6.当我提取最简单的子项目并自行构建时,sourceCompatibility设置正确,Java Byte代码与1.6兼容.但是,即使这个子项目在多项目构建中使用时也使用了错误的sourceCompatibility.

BTW:我在一些子项目使用的插件是:java,war,jetty,gwt …

java compatibility bytecode gradle

56
推荐指数
2
解决办法
5万
查看次数