编译面向 1.7 的 Java 类,并在类路径上使用 JDK 8 构建的类

  • 本文关键字:路径 构建 JDK 编译 Java java
  • 更新时间 :
  • 英文 :


我有以下情况:

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

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

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

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

最新更新