javac kann den Symbolkonstruktor-Dienst nicht finden

8

Ich lerne gerade CXF mit Hilfe dieses Apache CXF Web Service Entwicklung Buches, aber Leider wird eines der Beispielprojekte des Buches nicht einmal kompiliert!

Der fragliche Code ist contractfirst von Kapitel 3 und kein Tippfehler, weil ich den Quellcode wörtlich verwende, wie er von heruntergeladen wurde Unterstützungsseite des Buches .

Die 3 Kompilierungsfehler deuten eigentlich auf ein einziges Problem hin:

%Vor%

In der Datei OrderProcessService.java.

Die erste Suche nach schlägt vor, dass dies ein JAX-WS 2.2 vs. 2.1 Problem, aber ich habe keine Ahnung, wie man diese ANT-basierte Kompilierungsumgebung JAX-WS 2.2" unterstützen "lässt.

Ich habe versucht, ein jaxws-api.jar in %JAVA_HOME%\lib\endorsed zu platzieren und ich habe versucht, dieses Glas zur Liste der Bibliotheken des Projekts hinzuzufügen, aber keines schien mir zu helfen.

Ich benutze Maven nicht, also kann ich es nicht einmal als Abhängigkeit auflisten und hoffe, dass dies so sein wird magisch gelöst.

Irgendeine Idee, wie man dieses Problem löst? Damit ich dieses sehr einfache Projekt aufbauen kann?

    
Eternal Learner 03.01.2013, 00:40
quelle

3 Antworten

14

Aus Ihrer Beschreibung klingt das ähnlich wie das Problem in diesem Post .

Um dieses Problem zu umgehen, kopieren Sie einfach jaxb-api.jar , jaxws-api.jar in JDKs JREs /lib/endorsed

Beachten Sie, das "Indossieren" bedeutet das Platzieren der relevanten JAR-Dateien (jaxb-api.jar, jaxws-api.jar in diesem Fall) in %JAVA_HOME%\jre\lib\endorsed (notieren Sie jre im Pfad ). Erstellen Sie nicht das unterstützte Verzeichnis direkt unter dem Verzeichnis lib des JDK.

oder ... Wenn Sie Ihre JDK-Installation nicht anfassen möchten, verwenden Sie diese env vars verwendet wsimport und wsgen (wobei JAXWS_HOME auf JAX-WS 2.1 verweist):

%Vor%

oder ... Wenn Sie ant-Aufgaben verwenden, können Sie -Djava.endorsed.dirs=%JAXWS_HOME%/lib als jvmarg weitergeben, während Sie wsimort und wsgen ant-Aufgaben aufrufen (damit dies funktioniert, müssen Sie das fork-Attribut von wsimort und wsgen ant-Aufgaben setzen) ).

Der Dank geht an Rama Pulavarthi .

    
Withheld 03.01.2013, 18:23
quelle
0

Die Bestätigung der Version 2.2 des jaxws-api-Glases sollte funktionieren. Sie könnten auch das Flag "-fe jaxws21" an den CXF-Befehl wsdl2java übergeben, um stattdessen 2.1-kompatiblen Code zu generieren.

    
Daniel Kulp 03.01.2013 01:28
quelle
0

Das Hinzufügen von webservices-api-2.2.jar allein in % JAVA_HOME% \ jre \ lib \ endorsed hat das Problem für mich behoben.

    
Manjunath D R 22.05.2014 10:52
quelle

Tags und Links