项目有不同的Java编译器版本时是否有任何问题?

时间:2013-02-26 04:36:39

标签: java eclipse maven java-7 java-6

我有一个包含多个Java项目的Eclipse工作区(在Maven中);这些彼此依赖。最近我开始改变一些项目以Java 1.7为目标,除了解决一些新警告之外,编译时没有什么不同。

然而,当我尝试运行一切时,感觉会出现问题。在以下情况下,如何加载类文件,是否存在任何问题?

  • Java 1.6项目依赖于Java 1.7项目时是否存在问题? 1.6 VM会拒绝运行任何1.7生成的字节码,还是会发生一些奇怪的事情才能让它运行?
  • 反向发生时是否有问题?

3 个答案:

答案 0 :(得分:6)

当你有java 1.6项目取决于Java 1.7项目或java 1.7项目取决于Java 1.6项目时,你应该总是在更高版本的JVM上运行你的程序,在这种情况下是java 1.7。简而言之,在大多数情况下,使用Java SE 6编译器构建的类文件将在Java SE 7中正确运​​行。但也有一些例外。有关Java 6和Java 7之间不兼容的列表,请参阅Incompatibilities between Java SE 7 and Java SE 6

答案 1 :(得分:1)

您可以使用JDK 1.6构建一个项目,该项目具有一些用1.7

生成的库

如果项目1.7中的某些代码需要某些JDK 1.7功能(例如,它使用带有泛型的新Swing组合框),它将无法在1.6 JVM上运行。

所以这是非常谨慎的事情,因为你可能会遇到编译时遇到麻烦(至少不是沉默),但也会遇到运行时故障。如果你可以避免这种情况,那对你来说可能会更好。

答案 2 :(得分:0)

我也遇到了类似的问题,根据我的知识,我不认为1.6 VM可以运行任何1.7生成的字节码,但我认为反过来是可能的,因为1.7是1.6VM的升级版本。