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 находится в пути к классам:

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. Пом.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)

Любые идеи?


person Rafal    schedule 18.08.2011    source источник


Ответы (3)


Спасибо за помощь.

Для тех, кто использует JavaFX 2.0 SDK, вот простые шаги

  1. Перейдите к JavaFX 2.0 SDK\rt\lib в вашей оболочке (командная строка)

  2. Выполнить mvn install:install-file -Dfile=jfxrt.jar -DgroupId=com.oracle -DartifactId=javafx -Dpackaging=jar -Dversion=2.0

  3. Скопируйте папку bin из каталога 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>

person Sarad Thapa    schedule 20.02.2012
comment
Моя папка bin содержит только один файл: javafxpackager (mac). это нормально? мне скопировать его в ../javafx/ или в ../javafx/bin ??? К сожалению, это не работает :-( Исключение: вызвано: org.gradle.api.internal.artifacts.ivyservice.ModuleVersionNotFoundException: не удалось найти группу: com.oracle, модуль: javafx, версия: 2.0 - person Kai Wähner; 19.04.2012

Лучший ответ для текущей 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()» :)

person Infernoz    schedule 16.06.2013

На данный момент это похоже на решение, которое работает.

Сначала установите 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/).

Не очень элегантно, но это работает для меня ..

person Kristian    schedule 11.10.2011