Ich versuche, Java 1.4- Code zu kompilieren , der von IBMs WSDL2Java unter Java5 erstellt wurde, ohne die Stubs neu zu erstellen, und habe diesen Fehler in Eclipse festgestellt .
Ich gehe davon aus, dass die generierten Stubs nur kompiliert werden sollten, solange die Laufzeit jars
verfügbar ist (sie sind).
Access restriction: The type QName is not accessible due to restriction on required library C:\Program Files\Java\jdk1.5.0_16\jre\lib\rt.jar
Der vollständige Klassenname lautet javax.xml.namespace.QName
Was genau ist hier los? Ist dies ein Fall, in dem ich versuche, ein Schwein aus Wurst umzugestalten? Bin ich besser dran, die Stubs neu zu erstellen?
Antworten:
Es gibt noch eine andere Lösung, die auch funktioniert.
Dies funktioniert, weil Sie mehrere Klassen in verschiedenen JAR-Dateien haben. Wenn Sie die JRE-Bibliothek entfernen und erneut hinzufügen, stehen die richtigen Klassen an erster Stelle. Wenn Sie eine grundlegende Lösung wünschen, stellen Sie sicher, dass Sie die JAR-Dateien mit denselben Klassen ausschließen.
Für mich habe ich:
javax.xml.soap.SOAPPart
in drei verschiedenen Gläsern:axis-saaj-1.4.jar
,saaj-api-1.3.jar
und diert.jar
quelle
http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html hat am besten für mich funktioniert.
Unter Windows: Windows -> Einstellungen -> Java -> Compiler -> Fehler / Warnungen -> Veraltete und eingeschränkte API -> Verbotene Referenz (Zugriffsregeln): -> Wechsel zur Warnung
Unter Mac OS X / Linux: Eclipse -> Einstellungen -> Java -> Compiler -> Fehler / Warnungen -> Veraltete und eingeschränkte API -> Verbotene Referenz (Zugriffsregeln): -> Wechsel zur Warnung
quelle
Ich habe das gleiche Problem getroffen. Ich habe die Antwort auf der Website gefunden: http://www.17ext.com .
Löschen Sie zunächst die JRE-Systembibliotheken. Importieren Sie anschließend die JRE-Systembibliotheken erneut.
Ich weiß nicht warum. Ich hoffe, es kann Ihnen helfen, obwohl es mein Problem behoben hat.
quelle
Ich vermute, dass Sie versuchen, eine Standardklasse, die mit Java 5 geliefert wird, durch eine in einer Bibliothek zu ersetzen, die Sie haben.
Dies ist gemäß den Bestimmungen der Lizenzvereinbarung nicht zulässig, AFAIK wurde jedoch erst mit Java 5 durchgesetzt.
Ich habe dies schon mit QName gesehen und es "behoben", indem ich die Klasse aus dem Glas entfernt habe, das ich hatte.
BEARBEITEN Sie http://www.manpagez.com/man/1/java/ Notizen für die Option "-Xbootclasspath:"
"Anwendungen, die diese Option zum Überschreiben einer Klasse in rt.jar verwenden, sollten nicht bereitgestellt werden, da dies gegen die Binärcodelizenz für Java 2 Runtime Environment verstoßen würde."
Die http://www.idt.mdh.se/rc/sumo/aJile/Uppackat/jre/LICENSE
"Java-Technologieeinschränkungen. Sie dürfen die Java-Plattformschnittstelle (" JPI ", identifiziert als Klassen, die im" Java "-Paket oder in Unterpaketen des" Java "-Pakets enthalten sind) nicht ändern, indem Sie zusätzliche Klassen im JPI erstellen oder auf andere Weise die Hinzufügen oder Ändern der Klassen im JPI. Für den Fall, dass Sie eine zusätzliche Klasse und zugehörige APIs erstellen, die (i) die Funktionalität der Java-Plattform erweitern und (ii) Softwareentwicklern von Drittanbietern zur Verfügung stehen Um zusätzliche Software zu entwickeln, die eine solche zusätzliche API aufruft, müssen Sie unverzüglich eine genaue Spezifikation für eine solche API veröffentlichen, die von allen Entwicklern kostenlos verwendet werden kann. Sie dürfen keine zusätzlichen Klassen, Schnittstellen erstellen oder Ihre Lizenznehmer zum Erstellen autorisieren.oder Unterpakete, die in irgendeiner Weise als "Java", "Javax", "Sonne" oder eine ähnliche Konvention identifiziert werden, wie sie von Sun in einer Namenskonventionsbezeichnung angegeben wird. "
quelle
Ich habe auch diesen Fehler erhalten, aber mein Projekt wird auf der Befehlszeile mit Maven und dem Tycho- Compiler erstellt (es ist eine Reihe von OSGi-Plugins). Nachdem ich viele Leute durchsucht hatte, die das gleiche Problem hatten, es aber in Eclipse und nicht in der Befehlszeile behoben hatten, fand ich im Tycho-Entwicklerforum eine Nachricht , die meine Frage beantwortete und die Konfiguration in verwendete
pom.xml
, um die Compiler-Warnung bezüglich der Zugriffsbeschränkung zu ignorieren:Weitere Informationen finden Sie in den Tycho-FAQ . Ich brauchte AGES, um das herauszufinden, und dachte mir, ich würde jedem anderen helfen, der versucht, diese Fehler bei der Zugriffsbeschränkung über die Befehlszeile zu beheben, indem ich diese Antwort poste.
quelle
Windows -> Preferences -> Java Compiler
quelle
Ich hatte gerade auch dieses Problem. Anscheinend hatte ich die JRE in meinem Erstellungspfad auf 1,5 anstatt auf 1,6 gesetzt.
quelle
Zusätzlich zu Nels Beckmans Lösung habe ich die folgenden Tipps:
Unter Build-Pfad konfigurieren musste ich die Reihenfolge meiner Einträge unter Reihenfolge und Export ändern .
Außerdem musste ich als Eclipse PDE-Entwickler die Reihenfolge meiner Abhängigkeiten in meinem
MANIFEST.MF
ändern und das problematische Paket als erstes in die Liste aufnehmen.Durch das Spielen mit diesen Wählscheiben und das Ausführen von Project> Clean dazwischen konnte ich diese Warnungen beheben.
quelle
für mich so löse ich es:
unter Bibliotheken
Hinweis: Stellen Sie sicher, dass in Eclipse / Preferences (NICHT im Projekt) / Java / Installed JRE das JDK auf den JDK-Ordner verweist und nicht auf JRE C: \ Programme \ Java \ jdk1.8.0_74
quelle
Entschuldigung für die Aktualisierung eines alten POST. Ich habe das gemeldete Problem erhalten und es wie unten beschrieben gelöst.
Angenommen, Sie verwenden das Eclipse + m2e-Maven-Plugin. Wenn Sie diesen Zugriffsbeschränkungsfehler erhalten, klicken Sie mit der rechten Maustaste auf das Projekt / Modul, in dem Sie den Fehler haben -> Eigenschaften -> Erstellungspfad -> Bibliothek -> JDK ersetzen / JRE zu demjenigen, der im Eclipse-Arbeitsbereich verwendet wird.
Ich habe die obigen Schritte ausgeführt und das Problem ist behoben.
quelle
Wenn Sie sicher sind, dass Sie auf eine bestimmte Klasse zugreifen können, kann dies bedeuten, dass Sie Ihrem Projekt mehrere Jars hinzugefügt haben, die Klassen mit identischen Namen (oder Pfaden), aber unterschiedlichem Inhalt enthalten und sich gegenseitig überschatten (normalerweise eine alte Gewohnheit) Build Jar enthält eine integrierte ältere Version einer Bibliothek eines Drittanbieters.
Zum Beispiel, wenn Sie eine JAR-Implementierung hinzufügen:
aber auch eine ältere Version, die nur Folgendes implementiert:
Im Code-Editor funktioniert alles einwandfrei, schlägt jedoch während der Kompilierung fehl, wenn die "alte" Bibliothek die neue überschattet - d2 stellt sich plötzlich als "fehlend oder unzugänglich" heraus, selbst wenn sie vorhanden ist.
Die Lösung besteht darin, die Reihenfolge der Bibliotheken zur Kompilierungszeit zu überprüfen und sicherzustellen, dass die Bibliothek mit der korrekten Implementierung an erster Stelle steht.
quelle
Wechseln Sie in den Projekteigenschaften zum Java-Erstellungspfad. Entfernen Sie die vorhandene JRE-Systembibliothek und fügen Sie sie erneut hinzu, dh Bibliothek hinzufügen -> JRE-Bibliothek - wählen Sie jre ---> Fertig stellen. Zuletzt die Registerkarte Bestellung und Export auswählen, JRE Lib auswählen und nach oben gehen. Das ist es.
quelle
Ändern Sie einfach die Reihenfolge der Erstellungspfadbibliotheken Ihres Projekts. Klicken Sie mit der rechten Maustaste auf Projekt> Erstellungspfad> Erstellungspfad konfigurieren> Wählen Sie Reihenfolge und Export (Registerkarte)> Ändern Sie die Reihenfolge der Einträge. Ich hoffe, dass das Verschieben der "JRE-Systembibliothek" nach unten funktioniert. Es hat bei mir so funktioniert. Leicht und einfach .... !!!
quelle
In meinem Fall gab es eine Nichtübereinstimmung zwischen der Build-Pfad-JRE und der installierten JRE in der Ausführungsumgebung. Ich bin zu Projekt> Eigenschaften> Java-Compiler gewechselt. Unten war eine Warnmeldung.
Ich klickte auf die Links 'Installierte JRE', 'Ausführungsumgebung', 'Java-Erstellungspfad' und änderte die JDK-Version auf 1.7, und die Warnung verschwand.
quelle
Das Hinzufügen eines richtigen JRE-Systems über den Erstellungspfad ist die Lösung, aber Ihre Eclipse weist möglicherweise immer noch den Fehler auf. Um dies zu lösen, gehen Sie zu Java Build Path -> Order and Export und verschieben Sie Ihre JRE-Systembibliothek nach oben. Dies hat mein Problem gelöst.
quelle