Frage Zugriffsbeschränkung für Klasse wegen Einschränkung der erforderlichen Bibliothek rt.jar?


Ich versuche, Java 1.4-Code zu kompilieren, der von IBM WSDL2Java auf Java5 erstellt wurde, ohne die Stubs neu zu erstellen, und sah diesen Fehler in Eclipse. Ich gehe davon aus, dass die erstellten Stubs nur so lange kompiliert werden sollen, wie die Runtime-Jars verfügbar sind (sind sie).

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 ist javax.xml.namespace.QName

Was genau geht hier vor?

Ist das ein Fall, in dem ich versuche, ein Schwein von der Wurst zu umgestalten? Ist es besser, die Stubs neu zu erstellen?


783
2018-05-13 20:16


Ursprung


Antworten:


Es gibt eine andere Lösung, die auch funktioniert.

  1. Gehe zum Pfad erstellen Einstellungen in den Projekteigenschaften.
  2. Entferne das JRE-Systembibliothek
  3. Fügen Sie es zurück; Wählen "Bibliothek hinzufügen" und wählen Sie die JRE-Systembibliothek. Der Standard funktionierte für mich.

Dies funktioniert, weil Sie mehrere Klassen in verschiedenen JAR-Dateien haben. Wenn Sie die JRE-Bibliothek entfernen und erneut hinzufügen, werden die richtigen Klassen an erster Stelle stehen. Wenn Sie eine grundlegende Lösung möchten, stellen Sie sicher, dass Sie die JAR-Dateien mit den gleichen 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 das rt.jar


1804
2018-02-01 04:09



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): -> auf Warnung ändern

Unter Mac OS X / Linux: Eclipse -> Einstellungen -> Java -> Compiler -> Fehler / Warnungen -> Veraltete und eingeschränkte API -> Verbotene Referenz (Zugriffsregeln): -> auf Warnung ändern


113
2018-01-16 03:21



Ich habe das gleiche Problem gefunden. Ich habe die Antwort auf der Website gefunden:http://www.17ext.com.
Löschen Sie zuerst die JRE-Systembibliotheken. Importieren Sie anschließend die JRE-Systembibliotheken erneut.

Ich weiß nicht warum. Aber es hat mein Problem behoben, ich hoffe es kann dir helfen.


66
2017-11-23 05:55



Meine Vermutung ist, dass Sie versuchen, eine Standardklasse, die mit Java 5 ausgeliefert wird, durch eine in einer vorhandenen Bibliothek zu ersetzen.

Dies ist unter den Bedingungen der Lizenzvereinbarung nicht erlaubt, jedoch wurde AFAIK bis zu Java 5 nicht durchgesetzt.

Ich habe das schon einmal mit QName gesehen und ich habe es "repariert", indem ich die Klasse aus dem Glas, das ich hatte, entfernt habe.

BEARBEITEN http://www.manpagez.com/man/1/java/ Hinweise 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 Java 2 Runtime Environment-Binärcode-Lizenz verstoßen würde."

Das http://www.idt.mdh.se/rc/sumo/aJile/Uppackat/jre/LICENSE 

"Java Technology Restrictions. Sie dürfen das Java nicht ändern Platform Interface ("JPI", identifiziert als Klassen enthalten) innerhalb des "Java" -Pakets oder eines der Unterpakete des "Java" Paket), indem Sie zusätzliche Klassen innerhalb der JPI oder andernfalls verursacht die Ergänzung oder Änderung der Klassen in der JPI. Für den Fall, dass Sie ein erstellen zusätzliche Klasse und zugehörige API (s), die (i) erweitert die Funktionalität der Java-Plattform, und (ii) ausgesetzt ist an Softwareentwickler von Drittanbietern für den Zweck von Entwickeln zusätzlicher Software, die solche aufruft zusätzliche API, müssen Sie umgehend eine breite veröffentlichen genaue Spezifikation für eine solche API zur freien Nutzung durch alle Entwickler. Sie dürfen Ihr Konto nicht erstellen oder autorisieren Lizenznehmer zum Erstellen, zusätzliche Klassen, Schnittstellen oder Subpackages, die in irgendeiner Weise als "Java" bezeichnet werden, "javax", "sun" oder ähnliche Konvention wie von Sun in Benennungskonvention Bezeichnung. "


34
2018-05-13 20:30



Ich habe diesen Fehler auch bekommen, aber mein Projekt ist auf der Kommandozeile mit Maven und der gebaut Tycho Compiler (es ist eine Reihe von OSGi-Plugins). Nach Massen von Leuten, die das gleiche Problem hatten, aber es in Eclipse reparierten, anstatt auf der Befehlszeile, fand ich eine Nachricht im Tycho-Entwicklerforum das beantwortete meine Frage, benutze Konfiguration in pom.xml Ignoriere die Compiler-Warnung über die Zugriffsbeschränkung:

<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-compiler-plugin</artifactId>
    <version>${tycho.version}</version>
    <configuration>
        <compilerArgument>-warn:+discouraged,forbidden</compilerArgument>
    </configuration>
</plugin>

Weitere Informationen finden Sie in der Tycho-FAQ. Das brachte mich dazu, AGES auszuarbeiten, also dachte ich, ich würde jedem helfen, der versucht, diese Zugriffsbeschränkungsfehler von der Befehlszeile aus zu beheben, indem er diese Antwort veröffentlicht.


23
2017-09-06 12:31



  • Wechseln Sie in den Projekteigenschaften zu den Einstellungen für den Erstellungspfad. Windows -> Preferences -> Java Compiler
  • Entfernen Sie die JRE-Systembibliothek
  • Fügen Sie eine weitere JRE mit einer "perfekten Übereinstimmung" hinzu
  • Reinige und baue dein Projekt erneut. Es hat für mich funktioniert.

13
2018-03-31 19:09



Ich hatte gerade auch dieses Problem. Anscheinend hatte ich die JRE in meinem Build-Pfad auf 1,5 statt auf 1,6 gesetzt.


13
2017-07-01 09:46



Zusätzlich zu Nels Beckmans LösungIch habe folgende Tipps:

Unter Konfigurieren Sie den Erstellungspfad, Ich musste die Reihenfolge meiner Einträge unter ändern Bestellung und Export.

Darüber hinaus musste ich als Eclipse PDE Entwickler die Reihenfolge meiner Abhängigkeiten in meiner MANIFEST.MF, Hinzufügen des problematischen Pakets als erstes auf der Liste.

Spielen mit diesen Zifferblättern, zusammen mit dem Laufen Projekt> Sauber Zwischendurch konnte ich diese Warnungen auflösen.


8
2018-06-01 03:41



Entschuldigung für die Aktualisierung eines alten POST. Ich habe das gemeldete Problem und ich löste es wie unten gesagt.

Angenommen, Sie verwenden 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 -> Pfad erstellen -> Bibliothek -> JDK ersetzen JRE zu derjenigen, die im Eclipse-Arbeitsbereich verwendet wird.

Ich habe die obigen Schritte ausgeführt und das Problem wurde behoben.


6
2018-05-24 10:51