2013-05-29 21 views
5

私はapache-cxf-2.7.4でWebサービスを作成しました。 私のプロジェクトで作成されたクラスを入力しました。私は私のプロジェクトを持っている ライブラリは以下のとおりです。コンストラクタクラスjavax.xml.ws.Serviceのサービスは、指定された型には適用できません

  • math3-コモンズ-3.2.jar
  • XStreamの-1.4.4.jar
  • JAXWS-API-2.2.5.jar

は、私は次のエラーを持っている:

constructor Service in class javax.xml.ws.Service cannot be applied to given types; 
    required: java.net.URL,javax.xml.namespace.QName 
    found: java.net.URL,javax.xml.namespace.QName,javax.xml.ws.WebServiceFeature[] 
    reason: actual and formal argument lists differ in length 

答えて

10

問題は、JAX-WS APIのバージョンです。アプリケーションのクラスローダーは、最初にJava SEまたはJava EEに含まれるバージョンをロードしました。

Java SE 6またはJava EE 5、JAX-WS API 2.1の場合。 javax.xml.ws.Serviceのコンストラクタ:

javax.xml.ws.Service.Service(URL, QName) 

のJava SE 7またはJava EE 6、JAX-WSのAPI 2.2の場合。 javax.xml.ws.Serviceのコンストラクタ:

  1. 使用するJava SE 7またはJava EE 6

  2. :3つの可能な解決策はあります

    javax.xml.ws.Service.Service(URL, QName) 
    javax.xml.ws.Service.Service(URL, QName, WebServiceFeature...) // You need this! 
    

    は(それは、Webアプリケーションまたはスタンドアロンのアプリケーションであるかどうかに依存します)

  3. 引数を-frontend jaxws21に再実行して、代わりにJAX-WS 2.1準拠のコードを生成してください。

  4. まず、クラスローダーを変更して、アプリケーションに含まれるクラスをロードします。

2

あなたが実行コンフィギュレーションに

<defaultOptions> 
    <extraargs> 
     <extraarg>-frontend</extraarg> 
     <extraarg>jaxws21</extraarg> 
    </extraargs> 
</defaultOptions> 

(正しい方向に私を指しているため、ポール・バルガスのおかげで)これを追加する必要があります構築するためにMavenを使用している場合。

関連する問題