2013-05-31 3 views
12

Я прочитал несколько вопросов на этом сайте и в другом месте, которые указывают, что, когда установлен Oracle JDK7, нет необходимости указывать путь к jfxrt.jar , когда JDK установлен правильно. К сожалению, моя установка не кажется правильной, но я не могу понять, что не так.javac javac не может найти javafx jar без опции -cp

Я использовал правильный RPM для своего сервера Red Hat Enterprise Linux 6.2 Server, и я могу создавать приложения JavaFX в Eclipse, когда я добавил jfxrt.jar к внешним банкам. Но, пытаясь скомпилировать и запустить из командной строки, он не найдет классы JavaFX, если я не укажу параметр -cp для javac и java. Первоначально сервер использовал openjdk-1.6, но я использовал альтернативы для настройки javac и java, чтобы указать на недавно установленный JDK. Похоже, что это нормально работает, за исключением этой проблемы.

Я обнаружил, что та же проблема преследовала меня при попытке запустить JavaFX Exporter. Я пытался экспортировать проект, который отлично работает в Eclipse. Но при попытке запуска он не смог найти классы JavaFX. И я не понял, как сообщить экспортеру, где находится файл jfxrt.jar.

Для справки: jfxrt.jar находится по адресу /usr/java/jdk1.7.0_21/jre/lib/jfxtr.jar в моей системе.

+0

Является ли путь /usr/java/jdk1.7.0_21/jre/lib/ переменной CLASSPATH доступной для вашей оболочки? См. [Эту ссылку] (http://docs.oracle.com/javase/tutorial/essential/environment/paths.html) для примера (прокрутите вниз для конкретной информации о Linux). –

+0

Это не потому, что комментарии, которые я прочитал здесь, говорят, что это необязательно. Однако он отлично работает, когда я добавляю его в свой CLASSPATH. – kithril

ответ

14

Когда установлен Oracle JDK7, нет необходимости указывать путь к jfxrt.jar, если JDK установлен правильно.

Это неправда.

Если вы хотите скомпилировать и запустить приложение JavaFX в Java 7 (u21), и вы не используете JavaFX packaging tools, вам нужно добавить jfxrt.jar в свой путь к классам.

См. Compile code using JavaFX 2.0 (using command line) для образцов настройки пути JavaFX для компиляции (с помощью javac) и запуска (с java) приложения JavaFX 2 из командной строки.

Некоторые IDE-расширения или расширения IDE знают об этом и автоматически добавят jfxrt.jar к вашему пути к классам (например, плагин e (fx) клипса или тип проекта NetBeans JavaFX).

Некоторые сторонние инструменты, такие как JavaFX Maven Plugin или JavaFX Gradle Plugin, также содержат пакеты приложений JavaFX, поэтому вам не нужно добавлять jfxrt.jar в свой путь к классам.

Для разработки Eclipse рекомендуется использовать e(fx)clipse plugin, так как он заботится о проблемах с classpath (а также предоставляет другие полезные возможности для разработчиков JavaFX).

Для Java 8, jfxrt.jar is on the default classpath, поэтому вам не нужно явно указывать путь класса для использования JavaFX с такими инструментами, как javac.exe или java.exe для этой версии Java.

+0

Спасибо за это. Теперь я сделаю корректировки для моего класса. Я полагаю, что даже здесь дезинформация может выйти, и это хорошо, чтобы исправить ее.У меня были проблемы с инструментами для упаковки JavaFX, которые не нашли файл jar, и это заставило меня думать, что моя установка была неправильной. Но, возможно, мне нужно более внимательно изучить эту проблему. – kithril

+0

Что касается проблемы вашего пакета JavaFX, попробуйте запустить его с помощью '-nocss2bin', чтобы отключить двоичное преобразование CSS - я думаю, тогда это не касается местоположения jfxrt.jar. Если у вас есть дополнительные проблемы с частью упаковки, вы можете занести в журнал отдельный вопрос, чтобы получить справку об этом. – jewelsea

+0

Если я отправлю Oracle JRE 7 с моим приложением, будет ли он работать, чтобы переместить 'lib/jfxrt.jar' в' lib/ext/'? – hfs

-1

OpenJdk7 не включает jfxrt.jar. Используйте Oracle Jdk7 вместо этого.

Смежные вопросы