Gibt es eine Möglichkeit, Einschränkungen von javac 1.6.0_22 zu deaktivieren, die mich daran hindern, interne JRE-Klassen wie sun.awt.event.* ?
Ich bin nicht Auf der Suche nach:
eine Erklärung, warum es verboten ist.
Vorschlag, verschiedene Klassen zu verwenden
Vorschlag, Reflexion zu verwenden
Vorschlag zur Verwendung von ecj/eclipse
Ich möchte nur wissen, ob es möglich ist oder nicht, und wenn es dann wie ist.
Welche Fehler bekommst du genau? Ich kann dagegen kompilieren sun.awt.* ganz gut mit Javac 1.6.0_22 (allerdings auf dem Mac).
– Thilo
1. Nov. 10 um 3:00 Uhr
Ich mache einige Experimente mit Swing/AWT und muss auf ihre Interna zugreifen.
– Marcin Wisnicki
1. November 10 um 16:18 Uhr
Das gleiche Problem gilt für andere Klassen wie SOAP-Implementierungen in com.sun.xml.internal.messaging.saaj.util.* und der gleiche Trick vonignore.symbol.file (oberste Antwort unten) ist eine Problemumgehung. Fügen Sie diesen Kommentar hier hinzu, um Leuten zu helfen, die in diesem Kontext nach diesem Problem suchen.
– jlevy
15. Juni 15 um 22:41 Uhr
Ich habe die Antwort selbst gefunden.
Wenn Javac Code kompiliert, wird nicht verlinkt rt.jar standardmäßig. Stattdessen verwendet es eine spezielle Symboldatei lib/ct.sym mit Klassenstummeln.
Überraschenderweise enthält diese Datei viele, aber nicht alle internen Sonnenklassen. In meinem Fall war das eine dieser mehr internen als üblichen Klassen sun.awt.event.IgnorePaintEvent.
Und die Antwort auf meine Frage lautet: javac -XDignore.symbol.file
Das ist es, was Javac zum Kompilieren verwendet rt.jar.
Ich hatte genau das gleiche Problem, versuchte zu kompilieren, aber ich bekam diesen Fehler package sun.nio.fs does not exist Pro sun.nio.fs.BasicFileAttributesHolder
– Jaime Hablutzel
10. Januar 13 um 20:19 Uhr
Siehe auch die Antwort von @karmakaze für eine zusätzliche Problemumgehung für das Maven-Compiler-Plugin.
– Karmakaze
27. Mai 15 um 3:16 Uhr
Wie füge ich dies über die Eingabeaufforderung hinzu? Ich muss es für meine Web-App anwenden, die in Tomcat unter Linux bereitgestellt wird
– Santhosh
10. Juli 15 um 11:42 Uhr
@SanKrish – Welcher Teil von javac -XDignore.symbol.file verstehst du nicht?
– Stefan C
10. Juli 15 um 12:35 Uhr
@Stefan Danke für deine Antwort. Ich wollte nur die konfigurieren javac -XDignore.symbol.file für Kater statt für eine Klasse
Wie füge ich dies über die Eingabeaufforderung hinzu? Ich muss es für meine Web-App anwenden, die in Tomcat unter Linux bereitgestellt wird
– Santhosh
10. Juli 15 um 11:43 Uhr
Mann, du hast mir damit den Tag gerettet! Danke 🙂
– Anakin001
10. März 16 um 7:36 Uhr
@Anakin001 freut mich das zu hören. Diese obskuren Hits sind diejenigen, an die ich mich wirklich gerne gewöhne.
– Karmakaze
11. März 16 um 18:16 Uhr
Können Sie mir bitte sagen, welches Plugin ich für die ivy.xml-Datei hinzufügen kann.
– Pardha Saradhi
6. März 20 um 7:15 Uhr
Es gibt eine bessere Lösung. Fügen Sie zuerst die Option zu javac hinzu -XDenableSunApiLintControl und dann verwenden @SupressWarnings("sunapi") in deinem Code.
Wenn Sie Gradle verwenden, müssen Sie diese Optionen verwenden
Welche Fehler bekommst du genau? Ich kann dagegen kompilieren
sun.awt.*
ganz gut mit Javac 1.6.0_22 (allerdings auf dem Mac).– Thilo
1. Nov. 10 um 3:00 Uhr
Ich mache einige Experimente mit Swing/AWT und muss auf ihre Interna zugreifen.
– Marcin Wisnicki
1. November 10 um 16:18 Uhr
Das gleiche Problem gilt für andere Klassen wie SOAP-Implementierungen in com.sun.xml.internal.messaging.saaj.util.* und der gleiche Trick vonignore.symbol.file (oberste Antwort unten) ist eine Problemumgehung. Fügen Sie diesen Kommentar hier hinzu, um Leuten zu helfen, die in diesem Kontext nach diesem Problem suchen.
– jlevy
15. Juni 15 um 22:41 Uhr