我有一个为Java 7编译的gradle项目,我被告知由于后来的java版本中引入了一个错误,因此无法更新此项目以使用更新版本的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 :(得分:1)
您遇到的问题不是Gradle问题,而是Java问题。如果您的原始库jar是使用targetCompatibility = 1.8
构建的,那么不将能够在Java7 JVM上使用它。您将看到版本冲突错误消息。
如果您有权访问库源,则可以尝试使用targetCompatibility = 1.7
从源构建,然后使用生成的jar和Java7 JVM。
与早期版本的java不同,这里的复杂之处在于,如果将sourceCompatibility设置为1.8,java编译器将强制您使用targetCompatibility=1.8
- 这意味着,如果您的库源使用Lambda等任何1.8功能,您将无法编译到targetCompatibility = 1.7