2013-05-29 79 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的構造函數:

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

有三種可能的解決方案(取決於它是否是一個Web應用程序或獨立的應用程序):

  1. 使用的Java SE 7和Java EE 6

  2. 重新運行wsdl2java並使用參數-frontend jaxws21來生成符合JAX-WS 2.1的代碼。

  3. 更改類加載器首先加載包含在應用程序中的類。

2

如果使用Maven構建你應該增加這執行配置

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

(感謝保羅·巴爾加斯指着我在正確的方向)。

相關問題