Использование JavaFX в JRE 8, Ошибка "ограничение доступа"
при попытке использовать связанные классы javafx в моем новом проекте java 8 я получаю ошибку ограничения доступа от eclipse. До сих пор единственное "решение", которое я смог найти, - это сказать eclipse игнорировать ограничение доступа, но меня это не устраивает.
Пример ошибки:
Access restriction: The type Pane is not accessible due to
restriction on required library C:Program FilesJavajre8_0libextjfxrt.jar
Я использую Eclipse Kepler с патчем Eclipse JDT для java 8.
это, кажется, проблема, связанная с тем, что JavaFX не является частью выполнения JavaSE окружающая среда.
Я сейчас жестко запутался, как по http://en.wikipedia.org/wiki/JavaFX javaFX является частью JavaSE. Возможно ли, что Eclipse не признает, что это часть javaSE?
11 ответов:
с точки зрения Eclipse ошибка полностью верна, потому что JavaFX поступает из пути расширения classpath и не доступен на всех виртуальных машинах Java8 (например, ibm!).
Как указано, Вы можете подавить эти предупреждения с помощью add access-rules или IMHO лучшим решением является установка e(fx)clipse, который делает это автоматически для вас, а кроме того, даже предоставляет вам инструменты для JavaFX CSS и FXML.
вы можете захватить все в одном пакете от http://efxclipse.bestsolution.at/install.html
Я собираюсь добавить еще один ответ здесь, просто представить, что я думаю-это самый минимальный подход. В моей настройке Eclipse у меня установлен e (fx)clipse, который обеспечивает одно исправление для этого, а также предоставляет множество полезных функций разработки, которые вы почти наверняка захотите, если вы пишете приложения JavaFX. Это, пожалуй, самый практичный подход. Если по какой-то причине вам не нужен этот плагин, решение, описанное в этом ответе, устранит проблему с наименьшим количеством другие побочные эффекты.
Так минимальный исправить это, чтобы разрешить доступ к классам в этом файле jar (и только в этом jar папка.) Для этого щелкните правой кнопкой мыши на проекте и откройте диалоговое окно свойства проекта. Выберите " путь сборки "в левой панели и перейдите на вкладку" библиотеки". Вы увидите запись "JRE System Library". Разверните эту запись, и вы увидите подцентру "правила доступа":
выберите пункт" правила доступа "и нажмите кнопку"Изменить". нажать кнопку add."
В разделе "разрешение" выберите "доступно" и в разделе "шаблон правил" введите
javafx/**:Нажмите кнопку ОК, чтобы выйти из всех диалоговых окон.
Эта настройка позволит получить доступ ко всем классам в любых пакетах начиная
javafx., но сохранит правило в папке ext для всех других классов и является "минимальным" в этом смысле.опять же, то, что вы, вероятно, действительно хотите сделать, это установить плагин e (fx)clipse, но, насколько мне известно, это решение с наименьшей стороной влияние на настройки Eclipse.
Я решил эту проблему с помощью некоторого тщательного использования пути сборки проекта Eclipse.
- откройте свойства проекта вашего приложения и выберите раздел "путь сборки".
- добавьте jre8_0\lib\ext\jfxrt.jar как "внешний файл JAR" в Вкладка "библиотеки".
- на вкладке "порядок/экспорт" убедитесь, что это jfxrt.фляги первый в списке.
то, что это делает, заставляет Eclipse видеть jfxrt.баночка как раз такая регулярные 3-й файл-участник банку. Порядок важен, так что это имеет приоритет над записью в системной библиотеке JRE. Это тот же самый фактический файл JAR, но Eclipse видит его по-другому.
вы можете изменить любые конфигурации запуска, чтобы он не использовал "экспортированную" версию jfxrt.jar; однако в практическом плане это не будет иметь значения.
Я сделал это с Java8 и Eclipse Luna; но Принципал бы я уверен, что работать с любой комбинацией Java и Eclipse.
простой способ-установить e (fx)clipse-плагин для Eclipse для поддержки JavaFX:
- Выберите Справка -> Установить Новое Программное Обеспечение
- нажать кнопку Добавить, чтобы добавить следующий сайт:
- имя: efxclipse
- Location:http://download.eclipse.org/efxclipse/updates-released/1.2.0/site
- Нажмите кнопку ОК
- В разделе "Работа с" выберите недавно добавленный сайт "efxclipse"
- установите флажок "e (fx)clipse-install", чтобы установить все компоненты этого выбора
- перейти к следующим шагам, чтобы завершить установку
- перезапустите Eclipse. Если он все еще не распознает библиотеку JavaFX, перезапустите ее снова.
оригинальную информацию можно найти здесь:https://www.eclipse.org/efxclipse/install.html#for-the-lazy
- перейти к построить путь текущего проекта
под библиотеки
- выбираем " системная библиотека JRE [jdk1.8ххх]"
- клик редактировать
- и выберите либо " рабочее пространство по умолчанию JRE (jdk1.8xx)" или альтернативный JRE
- Нажмите кнопку Готово
- Нажмите кнопку ОК
Примечание: убедитесь, что в Eclipse / Preferences (не проект) / Java / установленная JRE, что jdk указывает на папку JDK, а не JRE C:\Program файлы\Java\jdk1.8. 0_74
выполните следующие действия:
1. Добавьте jfxrt.jar (из вашей папки установки) как "внешний файл JAR" на вкладке "библиотеки".
- на вкладке "порядок / экспорт" убедитесь, что это jfxrt.jar занимает первое место в списке.
это работает для меня
Я знаю, что на это уже ответили, но я нахожу предлагаемые решения неуклюжими.
- Я не хочу устанавливать плагин, чтобы избежать того, что я считаю недопустимой ошибкой.
- добавление jfxrt.jar как внешний jar будет работать, но это плохая идея, если вы планируете делать экспорт, потому что jfxrt.jar также будет экспортироваться. Наверное, не то, что ты хочешь.
другой вариант
в релизе "Mars" (и, возможно, ранее версии) вы можете отключить ошибки ограничения доступа. Под
Java - > компилятор - >ошибки / предупреждения view
и
"устаревший и ограниченный API"
вы можете установить "запрещенная ссылка (правило доступа)" в игнор.
Как James_D уже предложил я добавил правила доступа к моему файлу classpath. Я удалил плагин e(fx)clipse на данный момент, потому что у него есть ошибка проверки css (см. Как отключить предупреждение css "неизвестное свойство" в Eclipse Mars?).
вот моя запись в файле classpath для контейнера JRE:
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> <attributes> <attribute name="maven.pomderived" value="true"/> </attributes> <accessrules> <accessrule kind="accessible" pattern="javafx/**"/> <accessrule kind="accessible" pattern="com/sun/javafx/**"/> </accessrules> </classpathentry>
у меня была та же проблема. Я использовал решение James_D, но его точное решение не сработало для меня. Но с помощью
**/javafx/**вместоjavafx/**решил проблему для меня. Надеюсь, это поможет.PS: Я бы разместил это в качестве комментария под решением James_D, но я только что зарегистрировался и не имел достаточной "репутации" для этого.
Шаг-1: Перейдите к вашему jfxrt.сосуд. C:\Program файлы\Java\jre1.8. 0_111\lib\ext
Шаг 2 скопируйте файл jfxrt.банку
Шаг 3: перейдите в Eclipse,создайте новую папку, как это: [Создать папку с именем lib, чтобы положить наши jfxrt.jar file][2] [2]: https://i.stack.imgur.com/YsJ5S.png
Шаг-4: Выберите папку lib и нажмите CTRL+V, чтобы вставить jfxrt.сосуд [Вставьте jfxrt.jar][1] [1]: https://i.stack.imgur.com/Ljogu.png
Шаг 5: щелкните правой кнопкой мыши на jfxrt.jar и установить как построить путь.






Comments