Java 从jdk6调用JDK7编译类

Java 从jdk6调用JDK7编译类,java,java-7,Java,Java 7,我用jdk7编译了一个类,我试图用JDK6调用它,类路径中的JAR是用JDK6编译的 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.

我用jdk7编译了一个类,我试图用JDK6调用它,类路径中的JAR是用JDK6编译的

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


谢谢

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

编译源代码时,请给出参数
-target 1.6
。这样将生成符合1.6的字节码(即类文件将指示它们需要1.6或更高版本才能运行)使用十六进制编辑器。如果该类不使用任何Java 7新功能,它将正常工作。

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

@constantlearner那么您的程序根本无法工作?那么,在您担心1.6之前,您可能应该先修复它。@constantlearner,您是要告诉jdk7的错误消息是什么,还是您认为我们是读心术者?来吧,帮我们帮你。我正在尝试调试日志,请给我一些时间上传错误,抱歉inconvinience@constantlearner这不会花很长时间,而且你应该在最初的帖子中包含这些信息。说“它不工作”是程序员(或测试人员或客户机)能说的最无用的话。我在客户机端做这件事需要时间,而且场景很复杂。JAR是weblogicones@constantlearner所以你的程序根本不起作用?那么,在您担心1.6之前,您可能应该先修复它。@constantlearner,您是要告诉jdk7的错误消息是什么,还是您认为我们是读心术者?来吧,帮我们帮你。我正在尝试调试日志,请给我一些时间上传错误,抱歉inconvinience@constantlearner这不会花很长时间,而且你应该在最初的帖子中包含这些信息。说“它不工作”是程序员(或测试人员或客户机)能说的最没用的话。我在客户端做这件事需要时间,而且场景很复杂这里的JAR是weblogic One你不能从JDK1.6调用JDK1.7类…你不能从JDK1.6调用JDK1.7类…不。类文件将被标记为jdk 7,并且不会在其下运行,除非在编译时指定-target。@Kayaman请再次阅读问题,他要求运行类文件而不是编译,他已经声明他使用jdk 7编译了类,并希望在jre 6中调用。我知道。但是,如果在构建过程中没有指定目标,它将为1.7生成字节码,而不会在1.6.No下运行。类文件将被标记为jdk 7,并且不会在其下运行,除非在编译时指定-target。@Kayaman请再次阅读问题,他要求运行类文件而不是编译,他已经声明他使用jdk 7编译了类,并希望在jre 6中调用。我知道。但是,如果在构建过程中没有指定目标,它将为1.7生成字节码,而该字节码不会在1.6下运行。