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

Какое местоположение файла JAR для JavaFX, jfxrt.jar, в Linux?

Я пытаюсь запустить некоторый код JavaFX с Eclipse Kepler, с установленным плагином e (fx) clipse на машине Linux, используя

java version "1.7.0_21"
OpenJDK Runtime Environment (IcedTea 2.3.9) (7u21-2.3.9-5)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

Я понимаю, что хотя JavaFX был включен со стандартным JDK с версии JDK 7u6, JAR файл JavaFX во время выполнения jfxrt.jar был целиком отстранен от пути выполнения Java, пока дальнейшая проверка между JavaFX и остальной частью java-инфраструктура завершена. По этой причине вы должны вручную добавить его в библиотеки путей построения проекта, когда мы создадим новый проект Java.

Я искал эту банку в обоих каталогах без успеха:

/usr/lib/jvm/java-7-openjdk-common/jre/lib/
/usr/lib/jvm/java-7-openjdk-amd64/lib

Где еще я должен искать его?

4b9b3361

Ответ 1

Местоположение jfxrt.jar в Oracle Java 7:

<JRE_HOME>/lib/jfxrt.jar

Расположение jfxrt.jar в Oracle Java 8:

<JRE_HOME>/lib/ext/jfxrt.jar

<JRE_HOME> будет зависеть от того, где вы установили Oracle Java и может отличаться от дистрибутивов Linux и установок.

jfxrt.jar не находится в Linux OpenJDK 7 (это то, что вы используете).


Доступен пакет с открытым исходным кодом, который обеспечивает JavaFX 8 для систем на базе Debian, таких как Ubuntu. Для установки этого пакета необходимо установить пакет Debian OpenJDK 8 и пакет Debian OpenJFX. Я не запускаю Debian, поэтому я не уверен, где пакет Debian OpenJFX устанавливает jfxrt.jar.


Используйте Oracle Java 8.

С Oracle Java 8 JavaFX входит в состав JDK и находится по пути класса по умолчанию. Это означает, что классы JavaFX будут автоматически найдены как компилятором во время сборки, так и временем выполнения, когда ваши пользователи используют ваше приложение. Поэтому использование Oracle Java 8 в настоящее время является лучшим решением вашей проблемы.

OpenJDK для Java 8 может включать JavaFX (поскольку JavaFX для Java 8 теперь является открытым исходным кодом), но он будет зависеть от ассемблеров пакета OpenJDK от того, захотят ли они включить JavaFX 8 с их дистрибутивами. Я надеюсь, что они это сделают, поскольку это должно помочь устранить путаницу, с которой вы столкнулись в своем вопросе, а также обеспечивает гораздо большую функциональность в OpenJDK.

Я понимаю, что хотя JavaFX был включен со стандартным JDK с версии JDK 7u6

Да, но только Oracle JDK.

Версия JavaFX в комплекте с Java 7 не была полностью открытым исходным кодом, поэтому она не могла быть включена в OpenJDK (это то, что вы используете).

В том, что вам нужно использовать Java 7 вместо Java 8, вы можете загрузить Oracle JDK для Java 7 и использовать это. Затем JavaFX будет включен в Java 7. Из-за того, как Oracle настроил Java 7, JavaFX не будет находиться в пути к классам. Если вы используете Java 7, вам нужно добавить его в свой путь к классам и использовать соответствующие инструменты для упаковки JavaFX, чтобы позволить вашим пользователям запускать ваше приложение. Некоторые инструменты, такие как e (fx) clipse и тип проекта NetBeans JavaFX, будут заботиться о проблемах с классом и задачах упаковки для вас.

Ответ 2

В Ubuntu с OpenJDK он установлен в /usr/lib/jvm/default-java/jre/lib/ext/jfxrt.jar (технически это символическая ссылка на /usr/share/java/openjfx/jre/lib/ext/jfxrt.jar, но, вероятно, лучше использовать ссылку default-java)

Ответ 3

Местоположение jfxrt.jar в JDK 1.8 (Windows):

C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\jfxrt.jar