使用类路径上使用JDK 8构建的类编译目标为1.7的Java类

时间:2015-04-23 01:11:01

标签: java

我有以下情况:

Class Foo引用类Bar中的方法。我想用javac定位Java 1.7来编译类Foo,但是在使用Java 8语法的类路径上提供了一个Bar.class二进制文件,并使用JDK 8编译。在生产中,JRE 1.7将用于运行我的应用程序在类路径上使用不同的Bar.class副本 - 此类版本的Bar使用Java 1.7语法,并使用JDK 7构建。

  1. 假设Bar的方法签名保持完全相同,编译并运行Foo会有任何问题吗?
  2. 我可以使用JDK 7编译Foo,还是必须使用JDK 8?

1 个答案:

答案 0 :(得分:2)

对于直接javac,您可以使用-source / -target让Java8 JDK构建Java7类文件(这实际上只是意味着在类文件中添加不同的版本号)。

我的构建使用Maven,虽然我的Jenkins服务器使用Java8构建,但指定的源/目标是1.7,并且每个人都可以使用现有的Java7 JDK运行。当第一个依赖项目迁移到Java8时,Maven POM改为构建1.8目标,每个人都被迫升级。