JavaFX 2.0 + NetBeans + Maven
Я создаю приложение JavaFX 2.0 с использованием NetBeans 7.0.1. Когда я создаю проект стандартным способом, все работает нормально. К сожалению;) Мне нужен проект Maven...
Я не нашел JavaFX 2.0 в репозитории Maven, поэтому мой pom.xml сейчас выглядит так:
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>mygroup</groupId>
<artifactId>ui</artifactId>
<version>0.1</version>
<name>My Project</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>javafx</groupId>
<artifactId>jfxrt</artifactId>
<version>2.0</version>
<type>jar</type>
<scope>system</scope>
<systemPath>${env.JAVAFX_HOME}\lib\jfxrt.jar</systemPath>
</dependency>
</dependencies>
</project>
Системная переменная JAVAFX_HOME установлена:
C:\Users\rach>echo %JAVAFX_HOME%
C:\Program Files\Oracle\JavaFX Runtime 2.0\
Компиляция идет нормально, но когда я запускаю программу под NetBeans, я получаю сообщение об ошибке:
Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application at java.lang.ClassLoader.defineClass1(Native Method)
Однако jfxrt.jar находится в classpath:
C:\>echo %CLASSPATH%
C:\Program Files\Oracle\JavaFX Runtime 2.0\lib\jfxrt.jar
Когда я запускаю приложение из командной строки, оно работает нормально.
Когда я устанавливаю jfxrt.jar в локальный репозиторий во время выполнения, приложение все равно не запускается, поскольку не может найти C: \ Program Files \ Oracle \ JavaFX Runtime 2.0 \ bin \ mat.dll. pom.xml:
<dependency>
<groupId>javafx</groupId>
<artifactId>jfxrt</artifactId>
<version>2.0</version>
<type>jar</type>
</dependency>
Эффект:
Exception in thread "main" java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Can't load library: C:\Repositories\MavenRepo\javafx\jfxrt\bin\mat.dll at com.sun.javafx.tk.quantum.QuantumToolkit.startup(Unknown Source)
Есть идеи?
3 ответа
Спасибо за помощь.
Те, кто использует JavaFX 2.0 SDK, несложные шаги
Перейдите к JavaFX 2.0 SDK\rt\lib в вашей оболочке (командная строка)
Выполните mvn install:install-file -Dfile=jfxrt.jar -DgroupId=com.oracle -DartifactId=javafx -Dpackaging=jar -Dversion=2.0
Скопируйте папку b in из каталога JavaFX 2.0 SDK \ rt \ в каталог.m2\repository\com\oracle\javafx
4.<dependency>
<groupId>com.oracle</groupId>
<artifactId>javafx</artifactId>
<version>2.0</version>
<scope>compile</scope>
</dependency>
Лучший ответ для текущей Java 7 с Java FX 2.0:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>javafx</artifactId>
<version>2</version>
<systemPath>${java.home}/lib/jfxrt.jar</systemPath>
<scope>system</scope>
</dependency>
и добавьте это к действию "Выполнить проект" используемого профиля Maven в NetBeans:
exec.classpathScope=compile
Вы также можете использовать это с действиями "Отладка проекта", "Проект профиля", "Запуск файла через main()", "Отладка файла через main ()" и "Файл профиля через main ()":)
На данный момент, это, кажется, решение, которое работает..
Сначала установите jfxrt.jar:
mvn install:install-file -Dfile=jfxrt.jar -DgroupId=com.oracle -DartifactId=javafx-runtime -Dpackaging=jar -Dversion=2.0
Затем скопируйте папку bin из загруженной среды выполнения JavaFX в локальное хранилище Maven (home/.m2/repository/com/oracle/javafx-runtime/)
Не очень элегантно, но у меня это работает..