Erneut holt mich eine Umstellung von Java 9 ein: javax.xml.ws.http.HTTPException bzw. das ganze Paket javax.xml.ws ist nicht mehr dabei, oder doch, aber nicht standardmäßig im Classpath.
Beim Komplilieren lässt sich das mit --add-modules java.xml.ws umgehen, die genaue Diskussion siehe:
Es funktioniert alles, der einzige Schönheitsfehler besteht darin, dass Ecplise zurecht meckert “The import java.xml.ws can not be resolved!”, da das Projekt ein Java-10-Projekt ist.
Ich müsste nun also auch Eclipse irgendwo für diese Datei oder dieses Projekt die command lne option --add-modules java.xml.ws mitgeben können. Probiert habe ich:
Window - Preferences - Compiler - Building
Project - Properties - Java Compiler - Building
Rechtsklick auf die Datei - Properties - Run/ Debug Settings
Letzteres sieht am vielversprechensten aus, leider sind die Felder rechts (“New…”, “Edit…” und so weiter) ausgegraut, so dass ich nichts hinzufügen kann.
Ich mag es nicht, wenn meine Projekte “rot” sind, ich lasse sie nicht mal “gelb”, daher würde ich sehr gern den Fehler wegbekommen, auch wenn er “nur” ein optisches Problem darstellt.
Ich kann leider keine genaue Aussage machen, da ich noch bei Java 8 hänge.
Aber kannst du über den Build Path deines Projektes was machen, dass er die benötigten Sachen kennt?
Dafür müsste ich die irgendwo im JDK versteckten Jars als externe Jars angeben… ich schaue mal.
Da wäre ein c:\Program Files\Java\jdk-10\lib\missioncontrol\plugins\javax.xml_1.3.4.v201005080400.jar in welchem javax\xml enthalten ist, aber darin kein ws drin ist. Mmh… auch in den anderen Jars, die mit javax anfangen, finde ich keines mit HTTPException.class.
In der Datei src.zip gibt es sogar die Datei java.xml.ws\javax\xml\ws\http\HTTPException.java. Aber das ist ja leider kein Jar-File.
Edit: Vermutlich könnte ich mir ein eigenes Jar bauen mit HTTPException, ProtocolException und WebServiceException, aber das scheint mir ein ziemlich hässlicher Workaround zu sein, da hoffe ich erstmal auf andere Tipps.
Maven holt sich das aus einem Repository wo es das Jar-File findet. Das ist entweder das lokale Repository auf deinem Rechner, ein konfiguriertes Repository oder Maven Central. (Wobei anzumerken ist, dass es immer lokal installiert wird, wenn Maven es runtergeladen hat).
Das Repository hat im Prinzip die Ordnerstruktur der group sowie artifact id zusammen mit der angegebenen Version und danach sucht Maven das entsprechende pom.xml und die Jar Datei.
Die Lösung von mrBrown funktioniert. Damit ist Eclipse ruhig gestellt.
Leider kann man das jar nicht beim Komplilieren einsetzen, da er wohl die versteckte eigene Version heranzieht, statt die aus dem Jar:
error: package javax.xml.ws.http is not visible
import javax.xml.ws.http.HTTPException;
^
(package javax.xml.ws.http is declared in module java.xml.ws, which is not in the module graph)
Aber wenn das später aus dem JDK ganz entfernt wird, sollte die Verwendung des Jars auch hier die Lösung darstellen.