2014-07-14 21 views
18

Używam eclipse kepler z biblioteką systemową java SE 1.8 jdk, ale kiedy używam klas lub metod javafx, eclipse wyświetla ostrzeżenie takie jak Access restriction: The type 'TableColumn<?,?>' is not API (restriction on required library 'C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\jfxrt.jar').Eclipse ostrzega o ograniczeniach dostępu dla klas jfxrt.jar

Próbowałem dodać regułę dostępu do biblioteki systemowej, aby umożliwić dostęp do wszystkich słoików w bibliotece przy użyciu symbolu wieloznacznego *, ale ostrzeżenie nadal istnieje. Używam również maven do projektu budowlanego. Kod działa, ale ostrzeżenie jest dokuczliwe i wpływa na czytelność, ponieważ koduję. Każda pomoc jest doceniana.

Edit: Próbowałem też dodanie @SuppressWarnings("restriction") na początku moich klas, ale to nadal nie rozwiązuje nieznanej przyczynie i ukrywa wszystkie inne ostrzeżenia, które mogą restrykcyjnych Muszę zobaczyć

+1

możliwe duplikat [Using JavaFX w JRE 8] (http://stackoverflow.com/questions/22812488/using-javafx-in-jre-8) – Hilikus

+1

Masz błędną składnię wieloznaczną. Użyłeś '*', który nie jest rekurencyjny, używałeś '**', a ty * powinieneś/powinnaś używać tylko 'javafx/**'. Zobacz moją odpowiedź poniżej. –

Odpowiedz

5

Można wybrać ignore w następujących ustawienia:

Windows -> Preferences -> Java -> Compiler -> Errors/Warnings 
(Project) Properties -> Java Compiler -> Errors/Warnings 

Użyj filtra, aby znaleźć "Forbidden reference"

Forbidden reference (access rules): zmień go na "ignore"

enter image description here

+6

Dzięki za pomoc, ale gdybym mógł naprawić przyczynę ostrzeżenia, zamiast go tłumić, byłoby lepiej. –

+0

Więcej informacji tutaj: http://stackoverflow.com/a/22815472/199296 –

+4

Zdecydowanie odradzam to rozwiązanie i nie powinno to być akceptowane. Zmienisz ustawienia dla WSZYSTKICH bibliotek, nie tylko JavaFX. Należy upewnić się, że używa się JDK w ścieżce budowania, jak wskazano w odpowiedzi poniżej ... – mmey

7

Łatwym sposobem jest zainstalowanie e (fx) Clipse - plugin do Eclipse wspierać JavaFX:

  1. Wybierz Help -> Install New Software
  2. Kliknij przycisk Dodaj, aby dodać następujące strony:
  3. Kliknij OK
  4. W "Praca z" rozwijanej listy wybierz ostatnio dodane strony "efxclipse"
  5. Zaznacz pole wyboru "e (fx) Clipse - install", aby zainstalować wszystkie składniki tego wyboru
  6. Przejdź do kolejnych kroków, aby zakończyć instalację.
  7. Uruchom ponownie Eclipse. Jeśli nadal nie rozpoznaje biblioteki JavaFX, uruchom ją ponownie.

Original informacji można znaleźć tutaj: https://www.eclipse.org/efxclipse/install.html#for-the-lazy

26

jestem w stanie ominąć to przez rekonfigurację biblioteki Java. Na przykład jawne wybranie Oracle JDK działa.

Configure Build Path

Edit Java lib

Select explicit JDK

+0

Ta dokładna technika działała dla mnie dokładnie tak, jak to opisano – systemcpro

3

Dodaj dostępu regułę, aby umożliwić dostęp do javafx/**.

Zobacz również tę odpowiedź: https://stackoverflow.com/a/32062263/1060350

dla wszystkich Mogę powiedzieć, że jest to błąd w Eclipse moim zdaniem. Nie mogłem również znaleźć sposobu na globalne skonfigurowanie tego środowiska w środowisku Eclipse, ale trzeba je ponownie wykonać dla każdego projektu.

Przejdź do ustawień projektu, ścieżki kompilacji, bibliotek, środowiska JRE. Kliknij "Zasady dostępu", które zwykle powinny mieć "Nie zdefiniowano reguł". Dodaj nową regułę: "Dostępna" i wprowadź wzorzec "javafx/**".

To mówi kompilatorowi Eclipse Java, że ​​javafx.* jest oficjalnym API, z którego możesz korzystać, więc ostrzeżenie zniknie.

Oczywiście, zezwalając na dostęp tylko do javafx jest znacznie lepszy niż zignorowanie ostrzeżenia.

Powód, dla którego * nie zadziałał, jest taki, że nie przeczytano definicji wieloznacznej. W regułach dostępu, * dopasowuje tylko jeden raz, potrzebujesz **, aby dopasować na dowolnej głębokości. To znaczy. * zezwoli na dostęp do javafx.SomeClass, ale nie będzie to javafx.scene.SomeClass ...

2

Dodaj regułę dostępu dla javafx.

Kliknij prawym przyciskiem myszy projekt> Ścieżka Właściwości> Budowa Jawa> Zakładka Biblioteki, a następnie:

  • Rozwiń JRE biblioteki systemowej
  • wybierz reguły dostępu, kliknij Edit... przycisk
  • kliknięcie Add...
  • wybrać Rozdzielczość : Accessible
  • ustawiona wzorzec reguł: javafx/**
  • kliknięcie OK
  • kliknięcie OK

add access to lib for jfxrt