2011-04-13 8 views
9

私はCXFの新機能で、WSDLからクライアントを作成しようとしています。私は過去にMetroとAxisを使ってきました。私はapache-cxf-2.3.3をダウンロードし、wsdl2javaを使ってクライアントスタブを生成しました。CXFのJava準拠レベルを設定するwsdl2java

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project client-cxf: Compilation failure: Compilation failure: 
[ERROR] \Devel\Projects\Client-CXF\src\main\java\my\webservice\ServiceRuntimeException.java:[38,149] cannot find symbol 
[ERROR] symbol : method required() 

[ERROR] \Devel\Projects\Client-CXF\src\main\java\my\snmpv2\MyService.java:[76,8] cannot find symbol 
[ERROR] symbol : constructor Service(java.net.URL,javax.xml.namespace.QName,javax.xml.ws.WebServiceFeature[]) 
[ERROR] location: class javax.xml.ws.Service 

それは問題と思わ:

<properties> 
    <cxf.version>2.3.3</cxf.version> 
</properties> 
<dependencies> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-frontend-jaxws</artifactId> 
     <version>${cxf.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-transports-http</artifactId> 
     <version>${cxf.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-ws-security</artifactId> 
     <version>${cxf.version}</version> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <inherited>true</inherited> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.5</source> 
       <target>1.5</target> 
       <optimize>true</optimize> 
       <debug>true</debug> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

私はプロジェクトをビルドするとき、私はこれらのエラーを取得:私は、Mavenを使用して、これで私のポンポンをそれを設定します生成されたコードがJava 6の機能(XmlElementRefのための "require"要素、Serviceの新しいコンストラクタ)を使用しているにもかかわらず、CXF Mavenの依存関係はJava 5用です。

生成されたコードをJava 5に準拠させるように指定する方法はありますか?

答えて

24

、CXFのWSDL2Javaのコマンドラインツールコード:問題が解決しない場合は

、あなたはそうのように、ポンポンで、ソースとターゲットラインを変更して、Java 6を使用するようにMavenを設定することができJava 5と互換性がありますが、Java 6と互換性がない可能性があります。その理由は、JAX-WS 2.2とJAXB 2.2に準拠したコードを生成するからです。しかし、Java 6に含まれているAPIのバージョンはわずか2.1です。

いくつかのオプションがあります:

1)簡単な、それがJAXWSに代わり2.2

2の2.1に準拠したコードを生成させるのWSDL2Javaコマンドに "-Fe jaxws21" を追加することですが)2.2のAPIを追加します。あなたのJDK

3)の承認ディレクトリにjarファイルは、私はGlassfishのは、WSDL2Javaのバージョンを持っているとは思いませんでした2.2のjarファイル

+0

互換性と-feオプションを使用していただきありがとうございます。 http://cxf.apache.org/docs/wsdl-to-java.htmlに関する説明はそれをうまく説明せず、使用するjax-wsバージョンを指定することができます。 – sdoca

+0

優秀、それは今私のために働く。 – Dax

0

wsdl2java documentationには、Javaバージョンを指定するオプションはありません。

Maven cxf-codegen-pluginを使用して、Mavenコンパイラのソースとターゲットバージョンを尊重するクライアントスタブを生成できます。実際

   <source>1.6</source> 
       <target>1.6</target> 
+0

を「是認」するのmavenでコンパイラプラグインを設定します。私はMetroクライアントを生成するときにwsimportを使用しました。 Axisにはwsdl2javaがありますが、現在インストールされていません。 cxf-codegen-pluginを使用すると、同じJava 6コードが作成されます。 – sdoca

+0

申し訳ありませんが、あなたが正しいです。メトロ版の 'wsimport'です。 – Powerlord

関連する問題