Ich versuchte, die Protokollierung meiner HTTP-Verbindungen zu verbessern, indem ich die eingebauten java.util.logging-Funktionen nutze. Aber nachdem ich eine Zeile eingefügt habe, um die Anmeldung im Code zu aktivieren, erhalte ich einen Fehler in meinem Ameisenbau, den ich nicht verstehe.Paket von rt.jar "existiert nicht" beim Kompilieren mit ant
error: package sun.util.logging does not exist
import sun.util.logging.PlatformLogger;
^
sun.util.logging.PlatformLogger
in rt.jar befindet, die immer auf dem Classpath sein sollen, soweit ich weiß. Und es ist keine "interne API", die beim Kompilieren eine Warnung ausgibt. Der Code funktioniert in Eclipse einwandfrei.
Ant läuft auf JDK 1.8.0_60 wie mein Eclipse-Projekt. Ich erwarte, dass es das rt.jar von dieser Installation benutzt. Warum kann auf einige ausgewählte Klassen nicht zugegriffen werden? Oder schaue ich auf den falschen Satz von Kern-Klassen und die Java-Task verwendet ein anderes rt.jar?
Hinweis: Ich weiß, dass ich Protokollierungseigenschaften verwenden kann, um es einzurichten. Das ist nicht der Sinn dieser Frage. Ich möchte wissen, warum ant ein Problem hat, das Eclipse nicht hat.
Ich fange an zu denken, dass "jemand" alle Zugriffsbeschränkungen für rt.jar in meinem Eclipse-Arbeitsbereich entfernt hat und dass ich niemals in der Lage gewesen wäre, auf "PlatformLogger" zuzugreifen. Aber die Frage bleibt, wie weiß JavaC, welche Klassen nicht durch Code referenziert werden können? – Stroboskop