java - JDK编译版本什么时候重要?

标签 java java-7 java-6

我正在构建两个 Java 工件。需要在 1.6 中构建一个,因为 PowerMock 与 1.7 不兼容,并且我们在很多单元测试中使用它。现在重构 PowerMock 不是一个选择,因为这会花费太多时间。

但是,我想在 1.7 中构建的 Java 应用程序中使用此工件,并在 1.7 中运行整个应用程序。我认为应该没问题,因为它只是构建一些类文件,我怀疑这些文件可能早在 1.2 或更早版本就发生了很大的变化(如果有的话)。不管怎样,我显然对此有一个模糊的理解,并且我有兴趣获得 Java 专家的深入解释,了解何时这很重要,何时不重要,以及为什么。

谢谢!

最佳答案

Java 通常在版本之间向后兼容,因此在旧版本上编译的任何内容都应该在较新的 JVM 上运行良好。事实上,许多通用库都是在尽可能旧的版本中编译的(现在通常是 Java 5),除非它们需要更新的功能来允许更多仍然停留在旧 JVM 上的人。

话虽如此,您还是需要担心一些问题。我在 Java 6 到 7 转换中遇到的一个问题是 TreeMap 的初始值为 null http://hariharanselvarajan-java.blogspot.com/2013/02/treemap-in-java-6-and-java-7.html

编辑 这是 Oracle 的链接,讨论 6 和 7 之间不兼容的内容,尽管我认为这只会影响重新编译的内容:http://www.oracle.com/technetwork/java/javase/compatibility-417013.html

关于java - JDK编译版本什么时候重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19554585/

相关文章:

java - System.out.printf 方法抛出标志异常

java - 无法加载主类 Netbeans

java - itextpdf 生成损坏的链接

java - 为什么我的程序没有返回值?

java - 尝试套接字连接后地址已被使用

java - Jfreechart:显示多个图表

java - 处理 ForkJoinPool 任务/操作中未捕获异常的更好方法

CXF2.7.2 + Weblogic 12c + Java 1.7

java - 为什么 isAnnotationPresent 在 Java 7 和 Java 8 之间的工作方式不同?

Java 1.6 上的 Java Mapcompute() 示例