我在java 6上编译了程序。在java 7上编译了库。我可以从java 6编译代码调用java 7编译代码,否则我会遇到运行时错误。我知道编译时会出错,但是我会在编译后更改jar。我在jvm 7上运行我的应用程序。
答案 0 :(得分:2)
通常,Java 7是向后兼容的,因此您可以使用使用Java 6编译的库。
例如:如果使用Java 6编译的库使用javax
包,它将使用与Java 7一起提交并使用Java 7编译的库。
我使用Apache CXF 2.4.6(使用Java 5编译)和Java 7. Apache CXF调用JBoss 7的Servlet API(使用Java 6编译)。
答案 1 :(得分:0)
是的,你可以,但是类文件格式存在问题;有关Java版本和类文件格式版本的确切映射,请参阅this question。
具体来说,如果你有使用JDK 6编译的源代码A,但是你的编译路径中的JAR具有主要版本为51的.class文件,则编译将失败,因为编译器将无法编译加载类文件。
但是,在编译时,您可以指定'-target 1.6'标志,以便生成的类文件与Java 6兼容。如果您可以访问库的源,则可以使用该目标重新编译它,以便它与一个1.6编译器。
最后(显然),JVM必须理解类文件格式版本。