Ich versuche, alten Code von vor einiger Zeit zu ändern und erhalte die folgenden Fehler:
Zugriffsbeschränkung: Auf die Methode create (JAXBRIContext, Object) vom Typ Headers kann aufgrund der Einschränkung der erforderlichen Bibliothek nicht zugegriffen werden. \ Jre \ lib \ rt.jar
für diese Importanweisungen:
import com.sun.xml.internal.bind.api.JAXBRIContext;
import com.sun.xml.internal.ws.api.message.Header;
import com.sun.xml.internal.ws.api.message.Headers;
import com.sun.xml.internal.ws.developer.WSBindingProvider;
Ich habe gesucht, was dies bedeuten könnte und wie ich es beheben kann, konnte jedoch keine klare Antwort finden. Einige Beiträge scheinen darauf hinzudeuten, dass einige JARs enthalten sind, die Klassen implementieren, die jetzt als Teil der Java-Kerndistribution verfügbar sind. Soweit ich jedoch sehe, enthält keine der von mir enthaltenen JARs andere / ältere Versionen der oben genannten Klassen.
Kann mir jemand sagen, worum es bei diesem Fehler geht und wie ich ihn beheben kann?
Vielen Dank für Ihre Hilfe bereits im Voraus,
Olli
quelle
Antworten:
Ich bin auf etwas Ähnliches gestoßen. Ich denke, die Ursache für die Warnung ist, dass Eclipse versucht, Sie davon abzuhalten, die internen
com.sun
Pakete zu verwenden, die als Teil Ihrer Arbeitsbereich-JRE installiert sind, aber nicht Teil der öffentlichen Java-API sind.Wie Justin in seiner Antwort sagt, kann das Ändern Ihrer Compilereinstellungen die Warnung verbergen. Ein differenzierterer Ansatz besteht darin, Ihren Erstellungspfad so zu ändern, dass der Zugriff auf das betreffende Paket explizit möglich ist:
"com/sun/xml/internal/**"
.Nach dem Hinzufügen dieser Zugriffsregel sollte Ihr Projekt ohne diese Warnung erstellt werden.
quelle
Ausgezeichnete Antwort bereits vor Ort bietet hier .
Siehe die folgende Zusammenfassung:
quelle
Keine echte Lösung, aber überall, wo ich hinschaute, bestand die vorgeschlagene Lösung darin, Eclipse einfach zu sagen, dass dies keine Fehler sind. Sie können es ändern, indem Sie zu Eigenschaften -> Java-Compiler -> Fehlerwarnungen -> Veraltete und neu eingestellte APIs -> Verbotene Referenz (Zugriffsregel) gehen. Ändern Sie es von Fehler in Warnung oder Ignorieren.
quelle
Ich habe dieses Problem mit den folgenden Schritten gelöst: Erweitern Sie Ihr Projekt, klicken Sie mit der rechten Maustaste auf "JRE-Systembibliothek"> Eigenschaften> wählen Sie die dritte Option "Arbeitsbereich-Standard-JRE"> OK. Hoffe es hilft dir auch
quelle
<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
Zum BeispielIn Eclipse:
Project -> properties -> java Build Path -> libraries
Entfernen Sie dann die vorhandene JRE-Systembibliothek
Add Library -> JRE System library -> next -> ok
Fehler wird entfernt.
quelle
Ich hatte das gleiche Problem, als mein Plugin von einem anderen Projekt abhängig war, das einige Pakete in seine Manifestdatei exportierte. Anstatt die Zugriffsregeln zu ändern, habe ich es geschafft, das Problem zu lösen, indem ich die erforderlichen Pakete in den Abschnitt Export-Package aufgenommen habe. Dies macht die Pakete rechtlich sichtbar. Eclipse bietet dieses Update tatsächlich für die Fehlermarkierung "Zugriffsbeschränkung" an.
quelle
Führen Sie in der Eclipse-Umgebung, in der Sie Ihre Java-Programme ausführen, die folgenden Schritte aus:
quelle
Ich beantworte diese Frage, weil ich dieses Problem auf andere Weise behoben habe als die anderen Antworten. Ich hatte dieses Problem, als ich den Namen der Plugins, die ich exportierte, überarbeitete. Schließlich musste ich sicherstellen, dass Folgendes behoben / geändert wurde.
Dies hat bei mir funktioniert, aber Ihr Kilometerstand kann variieren.
quelle
Ich habe gerade die Projektfacette auf 1.7 geändert und es hat funktioniert.
quelle
Gehe zu Buildpath
Entfernen Sie die vorhandene JRE und fügen Sie eine neue JRE-Bibliothek hinzu, die Jdk1.6 enthält. Beenden Sie nun das gesamte Projekt und erstellen Sie es erneut
Ich denke, auf diese Weise können Sie Ihren Fehler beheben
quelle