2013-07-15 118 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