应用程序是否可以同时具有java 7和java 8类文件并部署在java 8 JVM上

时间:2017-08-07 06:01:23

标签: java java-8 jvm java-7

我有紧急情况。我有一个使用java 7编译的应用程序,同样在Java 8 jvm上运行。现在我需要修改某些文件。但是,我只有java 8 sdk。我可以部署java 8编译的类文件吗? java 7字节代码能否调用java 8文件?

2 个答案:

答案 0 :(得分:1)

JVM 8将运行以前所有编译器的类文件。类文件调用另一个编译器上编译的另一个文件没有问题。当您使用第三方库并且不关心使用哪个编译器来构建jar文件时,这是显而易见的。

答案 1 :(得分:1)

当然,为Java 7编译的字节码可以使用为Java 8编译的类,假设它们都运行在Java 8或更新的JRE上。这正是您为Java 7编译的应用程序在Java 8环境中运行时所发生的情况,因为您的类正在使用JRE类。

但是为Java 8编译的这些类不能在Java 7 JRE上运行。如果是这样,您仍然可以使用-target 1.7选项让Java 8 JDK的javac命令为Java 7环境生成类文件。然而,有捕获。 javac要求您也使用-source 1.7选项来启用Java 7目标,因此在这种情况下您不能使用新的语言功能,此外,您必须遵守规则,不要使用更新的API功能这些在Java 7中不存在。

-bootclasspath选项允许重定向到另一组JRE类以避免此类错误,但由于您不想下载此类环境,因此无效。这将通过Java 9 JDK解决。使用该JDK,您只需指定--release 7选项,其中包含-source 1.7-target 1.7-bootclasspath,而JDK本身则提供适当的API描述。