ant xjc任务与jdk 6一起工作

时间:2013-07-15 05:32:58

标签: ant java-7 xjc build.xml jdk6

我正在使用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。有任何建议如何使这项工作??

修改 对于从xsd生成的某些类,我收到major version 51 is newer than 50, the highest major version supported by this compiler.错误。如何解决这个问题??

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

1 个答案:

答案 0 :(得分:2)

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

Specifically, from Oracle's documentation of the Java 7 release:

  

二进制兼容性

     

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

     

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