Подтвердить что ты не робот

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") в начале моих классов, но это все еще не решает неизвестную причину и скрывает все другие предупреждения о ограничениях, которые мне могут потребоваться, чтобы увидеть

4b9b3361

Ответ 1

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

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

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

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

enter image description here

Ответ 2

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

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

Редактировать Java lib

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

Ответ 3

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

  • Выберите Справка → Установить новое программное обеспечение
  • Нажмите кнопку "Добавить", чтобы добавить следующий сайт:
  • Нажмите "ОК"
  • В раскрывающемся списке "Работа с" выберите недавно добавленный сайт "efxclipse"
  • Установите флажок "e (fx) clipse - install", чтобы установить все компоненты этого выбора.
  • Перейдите к следующим шагам, чтобы завершить установку.
  • Перезапустите Eclipse. Если он все еще не распознает библиотеку JavaFX, перезапустите его снова.

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

Ответ 4

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

См. также этот ответ: fooobar.com/questions/3924/...

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

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

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

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

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

Ответ 5

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

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

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

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