1

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

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

谢谢!

4

2 回答 2

1

编译后的代码应该是向后兼容的,所以如果你在 java7 上运行它,它应该比一些使用 java6 编译的代码无关紧要。

当您尝试其他方式时,您会收到无效的主要/次要版本号错误。

我假设您也可以混合和匹配 java 6 和 7 代码,就像您可以(谨慎)混合和匹配 pre & post 泛型 java。

于 2013-10-24T00:16:01.313 回答
1

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

于 2013-10-24T00:19:41.107 回答