我有在java 6上编译的程序,以及在java 7上编译的库。我可以从java 6编译代码调用java 7编译代码,否则就会有运行时错误。我知道我在编译时会有错误,但是我会在编译后更改jar。我在jvm 7上运行我的应用程序。
发布于 2015-11-22 12:06:59
一般来说,Java 7是向后兼容的,所以您可以使用用Java 6编译的库。
例如:如果用Java 6编译的库使用javax包,那么它将使用以Java 7开头的库,并使用Java 7进行编译。
我用Java7使用ApacheCXF2.4.6(用Java 5编译),Apache调用JBoss 7的Servlet (用Java6编译)。
发布于 2015-11-22 12:50:52
是的,您可以,但是类文件格式存在问题;有关Java和classfile格式版本的精确映射,请参阅this question。
具体来说,如果您有用JDK 6编译的源代码A,但是编译路径中有具有主要版本51的.class文件的JAR,那么编译将失败,因为编译器将无法加载类文件。
但是,在编译时,您可以指定一个“- target 1.6”标志,以便生成的类文件与Java 6兼容。如果您能够访问库的源代码,可以使用该目标重新编译它,以便它与1.6编译器兼容。
最后(很明显),JVM必须理解类文件格式的版本。
https://stackoverflow.com/questions/33854444
复制相似问题