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