2015-11-16 50 views
2

我有一个为Java 7编译的gradle项目,并且我被告知该项目无法更新为使用较新版本的Java,因为在后来的java版本中引入了一个bug。如何让Gradle编译使用较新Java版本的源库?

我想让这个项目使用通过java 8编译的库,结果我在运行时得到了一个主要的次要版本52冲突。

有没有办法告诉gradle尝试编译与Java 7兼容模式下的库?

眼下,得到它的打造,我用这条线在我的build.gradle:

sourceCompatibility = 1.7 
targetCompatibility = 1.7 

compile(group: 'com.blah.example', name: 'some-java-8-library', version: '1.0') { 
    transitive = false 
} 
+0

你是否能够从源码构建库? – RaGe

+0

糟糕,我刚刚意识到它构建的唯一原因是因为我不小心将JAVA_HOME设置为1.8。当我尝试使用1.7构建时,构建失败。 – SnoopDougg

回答

1

你会碰到是少了摇篮问题的问题,更多的Java问题。如果您的原始库jar是使用targetCompatibility = 1.8构建的,则您将而不是能够在您的Java7 JVM上使用它。您将看到版本冲突错误消息。

如果您可以访问库源代码,则可以尝试从源代码构建targetCompatibility = 1.7,然后使用带有Java7 JVM的结果jar。

与之前版本的java不同的是,java编译器会强制你使用targetCompatibility=1.8,如果你将sourceCompatibility设置为1.8 - 也就是说,如果你的库源使用任何1.8特性,比如Lambdas,你将无法使用编译为targetCompatibility = 1.7

相关问题