从jdk6调用jdk 7编译的类

时间:2013-09-25 13:28:30

标签: java java-7

我使用jdk7编译hava类,我尝试使用JDK6调用,类路径中的jar使用jdk 6编译

jdk6/bin/java com.test.myclass -classpath abc.jar xyz.jar pqr.jar MNO.jar

我的班级com.test.myclass出现在MNO.jar中,abc.jar xyz.jar pqr.jar是使用jdk6编译的

使用jdk7可以正常工作

jdk7/bin/java com.test.myclass -classpath abc.jar xyz.jar pqr.jar MNO.jar

这也失败。任何输入都可以解决这个问题。?

Exception in thread "Main Thread" java.lang.UnsupportedClassVersionError: com/test/MyClass: unsupported classversion 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: com.test.MyClass.  Program will exit.
256

由于

3 个答案:

答案 0 :(得分:4)

编译源代码时,请提供参数-target 1.6。这样就会生成1.6兼容的字节码(即类文件将指示它们需要1.6或更高才能运行)。

答案 1 :(得分:2)

作为最后的手段,您可以使用十六进制编辑器将.class文件中的类版本从33更改为32(从文件开头的第7个字节)。如果该类不使用任何Java 7新功能,它将正常工作。

答案 2 :(得分:-1)

如果您在课程中使用过任何jdk 7特定代码,那么它将不起作用,否则它应该有效。