2

我正在使用 xjc ant 任务从 xsd 和 wsdl 生成 java 类,然后我从这些生成的类中生成一个 jar。PFB 我正在使用的代码,

    <!-- Below code generates java classes from wsdl  -->
    <exec executable="xjc">
                <arg value="-wsdl" />
                <arg value="${wsdl}/mysample.wsdl" />
                <arg value="-d" />
                <arg value="${myclasses}" />
                 <arg value="-d" />
            <arg value="${myclasses}" />
            <arg value="${xsdfile}/mysample.xsd" />
     </exec> 

    <!-- Below code generates jar from java classes  -->
        <jar destfile="${jars}/mysample.jar" basedir="${myclasses}"/>

它在我的本地使用 JDK7 可以正常工作,但是当我将它部署到具有 jdk6 的服务器时,我得到了<pre>org.jboss.resteasy.spi.UnhandledException: java.lang.UnsupportedClassVersionError: com/my/webservices/mysampleweb. 任何建议如何使这项工作?

编辑: 我收到major version 51 is newer than 50, the highest major version supported by this compiler.一些从 xsd 生成的类的错误。这个怎么解决??

我检查了我的 ANT_HOME、java 版本和 jre 一切都很好.. 但是当通过命令行使用 ant 构建时我仍然收到上述错误.. 任何建议

4

1 回答 1

2

如果您使用 Java 版本 7 构建并尝试在 Java 6 上运行它 - 或者实际上比您编译的 Java 版本更早的任何东西 - 您将得到这个 UnsupportedClassVersionError。编译后的 Java 字节码与新版本的 JVM 前向兼容,但不向后兼容。将 Java 7 放在您的运行时环境中,或使用 JDK 6 进行编译。

具体来说,来自 Oracle 的 Java 7 版本文档:

二进制兼容性

Java SE 7 与 Java SE 6 二进制兼容,除了下面列出的不兼容性。除了指出的不兼容性之外,使用 Java SE 6 编译器构建的类文件将在 Java SE 7 中正确运行。

根据 JVM 规范,Java SE 7 的类文件版本是 51,因为 JSR 292 引入了调用动态字节码。Java SE 7 编译器生成的版本 51 类文件不能在 Java SE 6 中使用。

于 2013-07-18T12:42:34.420 回答