Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以从Java6编译代码调用Java7编译java代码_Java - Fatal编程技术网

可以从Java6编译代码调用Java7编译java代码

可以从Java6编译代码调用Java7编译java代码,java,Java,我已经在Java6上编译了程序。以及在Java7上编译的库。我可以从Java6编译代码调用Java7编译代码吗,否则我会有运行时错误。我知道我在编译时会有错误,但我会在编译后更改jar。我在jvm 7上运行我的应用程序。一般来说,Java 7是向后兼容的,所以您可以使用使用Java 6编译的库 例如:如果使用Java 6编译的库使用javax包,它将使用与Java 7混合并使用Java 7编译的库 我使用ApacheCXF2.4.6(用Java5编译)和Java7。ApacheCXF调用JBos

我已经在Java6上编译了程序。以及在Java7上编译的库。我可以从Java6编译代码调用Java7编译代码吗,否则我会有运行时错误。我知道我在编译时会有错误,但我会在编译后更改jar。我在jvm 7上运行我的应用程序。

一般来说,Java 7是向后兼容的,所以您可以使用使用Java 6编译的库

例如:如果使用Java 6编译的库使用
javax
包,它将使用与Java 7混合并使用Java 7编译的库


我使用ApacheCXF2.4.6(用Java5编译)和Java7。ApacheCXF调用JBoss7的ServletAPI(用Java6编译)

可以,但类文件格式存在问题;有关Java版本和类文件格式版本的精确映射,请参见

具体地说,如果您有一个使用JDK 6编译的源代码A,但在编译路径中有一个JAR,该JAR包含主版本51的.class文件,那么编译将失败,因为编译器将无法加载这些类文件

但是,在编译时,可以指定“-target 1.6”标志,以便生成的类文件与Java 6兼容。如果您有权访问库的源代码,您可以使用该目标重新编译它,以便它与1.6编译器兼容


最后(显然),JVM必须理解类文件格式的版本。

这一点尚不清楚。您想在Java6VM上运行依赖于Java7编译库的Java6编译应用程序吗?Java 7 VM?如果出现编译错误,如何完成应用程序?您可以在Java 7中执行Java 6编译程序,但不可能执行Java 6编译程序,例如,switch中的字符串不会在Java 6中编译。如果您想在java6中编译和执行所有内容,可以在java中使用target标志,这样它在较低版本中就可以正常工作。我会遇到问题吗?在线程“main”java.lang.UnsupportedClassVersionError::Unsupported major.minor version 51.0中会出现异常,因为“jar”是用JDK 1.7编译的,但您尝试在JDK 1.6环境中运行这不是问题。我问我是否可以从低jdk编译的代码调用高jdk编译的代码。如果在较低的jdk上编译的代码在较高的jvm上运行。@安东:当然可以,因为用Java 6编译的库使用与Java 7混合的Java 7库。