2013-05-29 10 views
5

Stworzyłem serwis internetowy z apache-cxf-2.7.4. Weszłam na zajęcia wyprodukowane w moim projekcie. biblioteki mam w moim projekcie są:konstruktor Usługa w klasie javax.xml.ws.Service nie może być zastosowana do podanych typów

  • math3-commons-3.2.jar
  • XStream-1.4.4.jar
  • JAXWS-api-2.2.5.jar

mam następujący błąd:

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 

Odpowiedz

10

problemem jest wersja z JAX-WS API. Program ładujący klasy dla twojej aplikacji najpierw załadował wersję zawartą w Java SE lub Java EE.

Dla Java SE 6 lub Java EE 5, JAX-WS API 2.1. Konstruktorzy w javax.xml.ws.Service:

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

dla Java SE 7 lub Java EE 6, JAX-WS API 2,2. Konstruktorzy w javax.xml.ws.Service:

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

Istnieją trzy możliwe rozwiązania (w zależności od tego, czy jest to aplikacja internetowa lub samodzielna aplikacja):

  1. Use Java SE 7 lub Java EE 6.

  2. Ponownie uruchom wsdl2java z argumentem -frontend jaxws21 w celu wygenerowania kodu zgodnego z JAX-WS 2.1.

  3. Zmień program ładujący klasy, aby najpierw załadować klasy uwzględnione w aplikacji.

2

przypadku korzystania Maven budować należy dodać to do konfiguracji wykonania

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

(dzięki Paul Vargas dla wskazujące mnie we właściwym kierunku).

Powiązane problemy