Mit JavaFX in JRE 8, "Access restriction" - Fehlermeldung
Wenn man versucht, javafx verwandten Klassen in meinem neuen java-8-Projekt bekomme ich eine Zugriffsbeschränkung Fehler von eclipse. Bisher das einzige 'Lösung' habe ich in der Lage zu finden, ist zu sagen, eclipse zu ignorieren, die Zugriffsbeschränkung, aber ich bin nicht zufrieden mit, dass.
Ein Beispiel des Fehlers:
Access restriction: The type Pane is not accessible due to
restriction on required library C:\Program Files\Java\jre8_0\lib\ext\jfxrt.jar
Ich verwende Eclipse Kepler mit der Eclipse-JDT-patch für java 8.
Dies scheint ein Problem zu sein mit der Tatsache, dass JavaFX ist nicht ein Teil des execution environment JavaSE.
Ich bin jetzt zäh verwirrt, als nach http://en.wikipedia.org/wiki/JavaFX javaFX ist ein Teil der JavaSE. Ist es möglich, dass Eclipse nicht erkennt, dass es ein Teil der javaSE?
- möglich, Duplikat der Einschränkung des Zugriffs auf die Klasse durch Beschränkung auf die gewünschte Bibliothek aus rt.jar?
- Sie könnten richtig sein, die von ihm vorgeschlagene Lösung half bei mir geklappt. Die Hälfte arbeitete ich meine, dass wenn ich die JRE mit der "workspace default' jre(jdk1.8.0) funktioniert es, aber wenn das 'execution environment' JavaSE-1.8(jdk1.8.0) ich habe immer noch den Fehler.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Eclipse-Sicht der Fehler ist völlig richtig, weil JavaFX wird von der kommenden Erweiterung classpath und nicht ALLE Java8-VMs (z.B. ibm!).
Wie beschrieben können Sie unterdrücken diejenigen Warnungen durch hinzufügen von access-Regeln oder-IMHO die beste Lösung ist die Installation von e(fx)clipse der tut dies für Sie automatisch, und neben, dass auch bietet Sie tooling für JavaFX-CSS-und FXML.
Können Sie packen alles in ein Paket aus http://efxclipse.bestsolution.at/install.html
Ich werde eine weitere Antwort hier, nur das zu bieten, was ich denke, ist der minimale Ansatz. In meinem Eclipse-setup, ich habe e(fx)clipse installiert, die bietet eine Lösung für dieses, als auch die Bereitstellung von vielen nützlichen Entwicklung der Funktionen, dass Sie fast sicher wollen, wenn Sie das schreiben von JavaFX-Anwendungen. Dies ist wahrscheinlich der praktikabelste Ansatz. Wenn aus irgendeinem Grund Sie nicht möchten, dass dieses plugin die Lösung skizziert, die in dieser Antwort wird das problem lösen mit den wenigsten Nebenwirkungen.
Wie schon in anderen Antworten, Eclipse, standardmäßig verweigert den Zugriff auf Klassen in jar-Dateien in das jre/lib/ext-Verzeichnis, da diese nicht garantiert werden, die auf allen Java-Plattformen. Wenn Sie schreiben eine JavaFX-8-Anwendung, Sie sind-vorausgesetzt Sie sind auf einer Plattform, wo jfxrt.jar ist in der lib/ext Standort.
Also die minimal Lösung für dieses ist, um den Zugang zu den Klassen, die in dieser jar-Datei (und nur in dieser jar-Datei). Um dies zu tun, klicken Sie mit rechts auf das Projekt und um das Projekt Eigenschaften-dialog. Wählen Sie "Build Path" in der linken Fensterbereich, und wählen Sie die "Bibliotheken" - tab. Sie werden sehen, ein "JRE System Library" - Eintrag. Erweitern Sie den Eintrag, und Sie werden sehen, ein "Access Rules" Untereintrag:
Wählen Sie die "Access Rules" - Eintrag und klicken Sie auf "Bearbeiten". Klicken Sie Auf "Hinzufügen".
Unter "Auflösung", wählen Sie "Zugänglich", und unter "Regel-Muster", geben Sie
javafx/**
:Klicken Sie auf OK, um zu beenden alle Dialoge.
Diese Einstellung ermöglicht den Zugriff auf alle Klassen alle Pakete Anfang
javafx.
, sondern bewahren in der Regel auf den ext-Ordner für alle anderen Klassen, und ist "minimal" in diesem Sinne.Wieder, was Sie wahrscheinlich wirklich wollen, zu tun ist durch die Installation des e(fx)clipse-plugin, aber meines Wissens ist dies die Lösung mit den geringsten Nebenwirkungen auf Ihrem Eclipse-setup.
e(fx)clipse is providing many useful development features
. Ein neues elementSashPane
die behebt einigeSliderPane
Probleme wurde Hinzugefügt, in e(fx)clipse 2.6 aber ich kann wirklich nicht verstehen . Gibt es irgendwelche Klassen, die wir verwenden können, von e(fx)clipse? Ich kann nicht finden, etwas ähnliches . Ich meine, ich kann nicht auf jede Klasse oder finden Sie etwas nützliches, das ich verwenden kann in dem Programm,wie die Bibliothek, die ich meine.Korrigieren Sie mich, denn ich weiß, ich bin irgendwo falsch hier ...:)Ich löste das problem durch das entfernen und readding die JDK-build-Pfad. Fragen Sie mich nicht, warum das funktioniert, obwohl.
Der einfache Weg ist die Installation von e(fx)clipse - plugin von Eclipse für JavaFX-Unterstützung:
Original-Informationen können hier gefunden werden: https://www.eclipse.org/efxclipse/install.html#for-the-lazy
Ich habe dieses problem gelöst, indem einige sorgfältige Nutzung der Eclipse-Projekt-build path.
"Bibliotheken" - tab.
erste in der Liste.
Was dieser macht, ist dass Eclipse finden Sie in der jfxrt.jar wie ein ganz normaler 3rd-party JAR-Datei. Die Reihenfolge ist wichtig, so dass diese Vorrang vor dem Eintrag in die JRE system library. Es ist das gleiche eigentlichen JAR-Datei, aber Eclipse sieht es anders.
Möchten Sie vielleicht zu verändern und ausführen von Konfigurationen, so dass es nicht verwenden Sie die "Exportieren" - version der jfxrt.jar; aber in der Praxis wird keinen Unterschied machen.
Habe ich das mit Java8 und Eclipse Luna; aber das wichtigste wäre, bin ich sicher, dass die Arbeit mit einer beliebigen Kombination von Java und Eclipse.
unter Bibliotheken
Hinweis: stellen Sie sicher, dass in Eclipse /Einstellungen (NICHT das Projekt) /Java /Installed JRE ,das jdk Punkte zu den JDK-Ordner nicht die JRE C:\Program Dateien\Java\jdk1.8.0_74
gehen Sie folgendermaßen vor:
1. Hinzufügen jfxrt.jar (aus dem Installation Ordner) als eine "Externe JAR-Datei" in den "Bibliotheken" - tab.
dieser arbeitete für mich
Ich weiß, das wurde bereits beantwortet, aber ich finde die vorgeschlagenen Lösungen zu klobig.
Eine weitere option
In 'Mars' release (und möglicherweise früheren Versionen) Sie können deaktivieren Sie die Zugriffsbeschränkungen Fehler. Unter
Java->Compiler->Fehler/Warnungen anzeigen
und
"Deprecated and restricted API"
können Sie "Forbidden reference (access rule)" zu ignorieren.
Als James_D schon vorgeschlagen, ich fügte hinzu, Regeln für den Zugang zu meinem classpath Datei. Ich deinstalliert das e(fx)clipse-plugin für den Zeit being, weil es hat eine css-Validierung Fehler (siehe Zum deaktivieren von css-Warnung "Unbekannte Eigenschaft" in Eclipse Mars?).
Hier ist mein Eintrag in der classpath-Datei, die für die JRE-container:
Ich hatte das gleiche problem. Ich verwendet James_D 's Lösung, aber seine genaue Lösung nicht für mich arbeiten. Aber mit
**/javafx/**
stattjavafx/**
das problem bei mir gelöst. Hoffe, das hilft.PS: ich würde diesen post als Kommentar unter James_D 's Lösung, aber ich habe gerade registriert und nicht genug "Ruf" zu tun.
Schritt 1: Navigieren Sie zu Ihrem jfxrt.jar.
C:\Program Files\Java\jre1.8.0_111\lib\ext
Schritt 2 Kopieren Sie die Datei jfxrt.jar
Schritt 3: Gehen Sie zu Eclipse,Erstellen Sie einen neuen Ordner wie diesem:
[Erstellen Ordner namens lib, um unsere jfxrt.jar Datei][2]
[2]: https://i.stack.imgur.com/YsJ5S.png
Schritt-4: Wählen Sie die lib-Ordner und drücken Sie STRG+V zum einfügen der jfxrt.jar
[Fügen Sie Ihre jfxrt.jar][1]
[1]: https://i.stack.imgur.com/Ljogu.png
Schritt 5: klicken Sie Rechts auf jfxrt.jar und als Build-Pfad.