2013-07-15 81 views
2

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

<!-- 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构建时,得到上述错误。任何建议

回答

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中正确运​​行。

由于invokedynamic字节代码,Java SE 7的类文件版本是51,根据JVM规范由JSR 292引入.Java SE 7编译器生成的第51版类文件不能用于Java SE 6.

+0

我得到的主要版本是51比这个编译器支持的最高版本50更新。一些从xsd生成的类错误。如何解决这个问题? –

+0

您是否已经在部署应用程序的服务器上发生了该错误?如果是这样,那台机器需要运行Java 7,或者您需要使用Java 6编译应用程序。 – David

+0

javac中的'-target'和'-source'不再工作了吗? – Sylwester