Eclipse выдает предупреждение об ограничении доступа для классов jfxrt.jar

Я использую eclipse kepler с системной библиотекой java SE 1.8 jdk, но когда я использую какие-либо классы или методы javafx, eclipse выдает предупреждение типа 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').

Я попытался добавить правило доступа в системную библиотеку, чтобы разрешить доступ ко всем банкам в библиотеке с использованием подстановочного знака *, но предупреждение все еще существует. Я также использую maven для создания проекта. Код работает, но предупреждение надоедает и влияет на читабельность кода. Любая помощь приветствуется.

Изменить: я также пытался добавить @SuppressWarnings("restriction") в начале своих классов, но это все еще не решает неизвестную причину и скрывает все другие предупреждения об ограничениях, которые мне могут понадобиться.


person Japheth Ongeri - inkalimeva    schedule 14.07.2014    source источник
comment
возможный дубликат Использование JavaFX в JRE 8   -  person Hilikus    schedule 06.03.2015
comment
У вас неправильный синтаксис подстановочных знаков. Вы использовали *, который не является рекурсивным, вы хотели использовать **, и вы должны были использовать только javafx/**. Смотрите мой ответ ниже.   -  person Has QUIT--Anony-Mousse    schedule 20.01.2017


Ответы (5)


Вы можете выбрать ignore в следующих настройках:

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

Используйте фильтр, чтобы найти "Forbidden reference"

Forbidden reference (access rules) : изменить на "ignore"

введите здесь описание изображения

person ltalhouarne    schedule 14.07.2014
comment
Спасибо за помощь, но если бы я мог исправить причину предупреждения, а не подавлять его, было бы лучше. - person Japheth Ongeri - inkalimeva; 14.07.2014
comment
Я бы настоятельно не рекомендовал это решение, и оно не должно быть принятым. Вы измените настройки для ВСЕХ библиотек, а не только для JavaFX. Необходимо обязательно использовать JDK в пути сборки, как указано в ответе ниже... - person mmey; 08.07.2016
comment
Вместо того, чтобы подавлять предупреждение, просто добавьте правильные правила доступа. Смотрите мой новый ответ ниже. - person broc.seib; 21.05.2017

Я могу обойти это, перенастроив библиотеку Java. Например, явный выбор Oracle JDK делает свое дело.

Настроить путь сборки

Редактировать библиотеку Java

Выбрать явный JDK

person Hollis Waite    schedule 17.10.2015
comment
Эта точная техника сработала для меня именно так, как описано - person systemcpro; 01.12.2017

Самый простой способ — установить e(fx)clipse — плагин для Eclipse для поддержки JavaFX:

  1. Выберите «Справка» -> «Установить новое программное обеспечение».
  2. Click Add button to add the following site:
  3. Нажмите ОК
  4. В выпадающем списке «Работать с» выберите недавно добавленный сайт «efxclipse».
  5. Установите флажок "e(fx)clipse - install", чтобы установить все компоненты этого выбора.
  6. Перейдите к следующим шагам, чтобы завершить установку
  7. Перезапустите Eclipse. Если он по-прежнему не распознает библиотеку JavaFX, перезапустите его снова.

Исходную информацию можно найти здесь: https://www.eclipse.org/efxclipse/install.html#for-the-lazy

person Thach Van    schedule 25.03.2015

Добавьте правило доступа, чтобы разрешить доступ к javafx/**.

См. также этот ответ: https://stackoverflow.com/a/32062263/1060350

Насколько я могу судить, это ошибка Eclipse, на мой взгляд. Я также не смог найти способ настроить это глобально в Eclipse, но вам нужно переделывать это для каждого проекта.

Перейдите к настройкам проекта, пути сборки, библиотекам, JRE. Нажмите «Правила доступа», которые обычно должны иметь «Правила не определены». Добавьте новое правило: «Доступно» и введите шаблон «javafx/**».

Это сообщает компилятору Eclipse Java, что javafx.* является официальным API, который вам разрешено использовать, поэтому предупреждение исчезает.

Очевидно, что разрешить доступ только к javafx гораздо лучше, чем игнорировать предупреждение.

Причина, по которой * не сработала, заключается в том, что вы не прочитали определение подстановочного знака. В правилах доступа * соответствует только один раз, вам нужно ** для соответствия на любой глубине. т.е. * разрешит доступ к javafx.SomeClass, но не к javafx.scene.SomeClass...

person Has QUIT--Anony-Mousse    schedule 20.01.2017

Добавьте правило доступа для javafx.

Щелкните правой кнопкой мыши свой проект> Свойства> Путь сборки Java> вкладка «Библиотеки», затем:

  • Развернуть системную библиотеку JRE
  • выберите Правила доступа, нажмите кнопку Edit...
  • нажмите Add...
  • выберите Разрешение: Accessible
  • установить шаблон правила: javafx/**
  • нажмите OK
  • нажмите OK

добавить доступ к библиотеке для jfxrt

person broc.seib    schedule 11.05.2017