При попытке использовать классы, связанные с javafx, в моем новом проекте java 8 я получаю сообщение об ошибке ограничения доступа от eclipse. Пока единственное «решение», которое мне удалось найти, - это сказать eclipse, чтобы он игнорировал ограничение доступа, но меня это не устраивает. Пример ошибки:
Access restriction: The type Pane is not accessible due to
restriction on required library C:\Program Files\Java\jre8_0\lib\ext\jfxrt.jar
Я использую Eclipse Kepler с патчем Eclipse JDT для java 8.
Кажется, это проблема, связанная с тем, что JavaFX не является частью среды выполнения JavaSE.
Я сейчас сильно запутался, поскольку, согласно http://en.wikipedia.org/wiki/JavaFX, javaFX является частью JavaSE. Возможно ли, что Eclipse не распознает, что он является частью javaSE?
Ответы:
С точки зрения Eclipse ошибка полностью верна, потому что JavaFX исходит из пути к классам расширения и недоступен на ВСЕХ виртуальных машинах Java8 (например, ibm!).
Как указано выше, вы можете подавить эти предупреждения, добавив правила доступа или IMHO, лучшим решением является установка e (fx) clipse, которая делает это автоматически для вас и, кроме того, даже предоставляет вам инструменты для JavaFX CSS и FXML.
Вы можете получить все в одном пакете с http://efxclipse.bestsolution.at/install.html
источник
Я собираюсь добавить здесь еще один ответ, просто чтобы представить, что я считаю наиболее минимальным подходом. В моей настройке Eclipse у меня установлен e (fx) clipse, который предоставляет одно исправление для этого, а также предоставляет множество полезных функций разработки, которые вам почти наверняка понадобятся, если вы пишете приложения JavaFX. Это, наверное, самый практичный подход. Если по какой-то причине вам не нужен этот плагин, решение, изложенное в этом ответе, устранит проблему с наименьшим количеством других побочных эффектов.
Как указано в других ответах, Eclipse по умолчанию запрещает доступ к классам в файлах jar в каталоге jre / lib / ext, поскольку они не гарантируются на всех платформах Java. Если вы пишете приложение JavaFX 8, вы предполагаете, что находитесь на платформе, где jfxrt.jar доступен в каталоге lib / ext.
Таким образом, минимальное исправление для этого - разрешить доступ к классам в этом файле jar (и только в этом файле jar). Для этого щелкните проект правой кнопкой мыши и откройте диалоговое окно свойств проекта. Выберите «Путь сборки» на левой панели и выберите вкладку «Библиотеки». Вы увидите запись «Системная библиотека JRE». Разверните эту запись, и вы увидите подстатью «Правила доступа»:
Выберите запись «Правила доступа» и нажмите «Изменить». Щелкните «Добавить».
В разделе «Разрешение» выберите «Доступный», а в разделе «Шаблон правила» введите
javafx/**
:Щелкните OK, чтобы закрыть все диалоговые окна.
Этот параметр разрешит доступ ко всем классам в любом начале пакетов
javafx.
, но сохранит правило в папке ext для всех других классов и является «минимальным» в этом смысле.Опять же, вы, вероятно, действительно хотите установить плагин e (fx) clipse, но, насколько мне известно, это решение с наименьшими побочными эффектами в вашей настройке Eclipse.
источник
e(fx)clipse is providing many useful development features
. В e (fx) clipse 2.6 был добавлен новый элемент,SashPane
исправляющий некоторыеSliderPane
проблемы, но я действительно не могу понять. Есть ли какие-нибудь классы, которые мы можем использовать из e (fx) clipse? Ничего подобного найти не могу. Я имею в виду, что я не могу получить доступ к какому-либо классу или найти что-то полезное, что я могу использовать внутри программы, я имею в виду библиотеку. Исправьте меня, потому что я знаю, что я здесь где-то не так ... :)Я решил проблему, удалив и прочитав JDK в пути сборки. Однако не спрашивайте меня, почему это работает.
источник
Самый простой способ - установить e (fx) clipse - плагин для Eclipse, поддерживающий JavaFX:
Исходную информацию можно найти здесь: https://www.eclipse.org/efxclipse/install.html#for-the-lazy
источник
Я решил эту проблему, осторожно используя путь сборки проекта Eclipse.
Это заставляет Eclipse видеть jfxrt.jar как обычный сторонний JAR-файл. Порядок важен, чтобы он имел приоритет над записью в системной библиотеке JRE. Это тот же самый файл JAR, но Eclipse видит его по-другому.
Вы можете изменить любую конфигурацию запуска так, чтобы она не использовала «Экспортированную» версию jfxrt.jar; однако на практике это не имеет значения.
Я сделал это с Java8 и Eclipse Luna; но руководитель, я уверен, будет работать с любой комбинацией Java и Eclipse.
источник
под библиотеками
Примечание: убедитесь, что в Eclipse / Preferences (НЕ проект) / Java / Installed JRE, jdk указывает на папку JDK, а не на JRE C: \ Program Files \ Java \ jdk1.8.0_74
источник
Я знаю, что на это уже был дан ответ, но я считаю предлагаемые решения неуклюжими.
Другой вариант
В выпуске Mars (и, возможно, более ранних версиях) вы можете отключить ошибки ограничения доступа. Под
Java-> Compiler-> Просмотр ошибок / предупреждений
и
«Устаревший API с ограничениями»
вы можете установить «Запрещенная ссылка (правило доступа)» на игнорирование.
источник
Следуй этим шагам:
Добавьте jfxrt.jar (из папки установки) как «Внешний файл JAR» на вкладке «Библиотеки».
На вкладке «Заказ / экспорт» убедитесь, что этот файл jfxrt.jar стоит первым в списке.
Это сработало для меня.
источник
У меня такая же проблема. Я использовал решение James_D, но его точное решение не помогло мне. Но используя
**/javafx/**
вместоjavafx/**
решить проблему для меня. Надеюсь, это поможет.PS: Я бы опубликовал это как комментарий к решению James_D, но я только что зарегистрировался и у меня не было достаточной «репутации» для этого.
источник
Как уже предложил James_D, я добавил правила доступа в свой файл пути к классам. Я удалил плагин e (fx) clipse на время, потому что в нем есть ошибка проверки css (см. Как отключить предупреждение css «Неизвестное свойство» в Eclipse Mars? ).
Вот моя запись в файле пути к классам для контейнера 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>
источник
Шаг 1. Перейдите к вашему jfxrt.jar. C: \ Program Files \ Java \ jre1.8.0_111 \ lib \ ext
Шаг 2 Скопируйте файл jfxrt.jar
Шаг 3: Перейдите в Eclipse, создайте новую папку вроде этого: [Создание папки с именем lib для размещения нашего файла jfxrt.jar] [2] [2]: https://i.stack.imgur.com/YsJ5S.png
Шаг 4: Выберите папку lib и нажмите CTRL + V, чтобы вставить jfxrt.jar [Вставьте ваш jfxrt.jar] [1] [1]: https://i.stack.imgur.com/Ljogu.png
Шаг 5: Щелкните правой кнопкой мыши файл jfxrt.jar и установите его как Путь сборки.
источник