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?
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 .
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.
Das Hinzufügen von webservices-api-2.2.jar allein in % JAVA_HOME% \ jre \ lib \ endorsed hat das Problem für mich behoben.