我有一个带有多个 Java 项目(在 Maven 中)的 Eclipse 工作区;它们相互依赖。最近我开始将一些项目更改为以 Java 1.7 为目标,除了解决一些新警告之外,编译时没有什么不同。
但是,当我尝试运行所有内容时,感觉可能会出现问题。在以下情况下,类文件是如何加载的,是否存在任何问题?
- 当 Java 1.6 项目依赖于 Java 1.7 项目时会出现问题吗?1.6 VM 会拒绝运行任何 1.7 生成的字节码,还是会发生一些奇怪的事情以使其运行?
- 反之时有问题吗?
When you have java 1.6 project depends on a Java 1.7 project or java 1.7 project depends on a Java 1.6 project, you should always run your program on the higher version of JVM, which is java 1.7 in this case. In a nutshell, in most cases, class files built with the Java SE 6 compiler will run correctly in Java SE 7. But there are some exceptions. Please see Incompatibilities between Java SE 7 and Java SE 6 for a list of incompatibilities between Java 6 and Java 7.
您可以使用 JDK 1.6 构建一个项目,其中包含一些使用 1.7 生成的库
但是,如果项目 1.7 中的某些代码需要一些 JDK 1.7 功能(例如,它使用带有泛型的新 Swing 组合框),它将无法在 1.6 JVM 上运行。
所以这是需要非常小心的事情,因为您可能会遇到编译时问题(至少不是静默),但也会遇到运行时问题。如果你能避免这种情况,它可能对你更好。
我也遇到过类似的问题,据我所知,我认为 1.6 VM 不能运行任何 1.7 生成的字节码,但我认为反过来是可能的,因为 1.7 是 1.6VM 的升级版本。