JavaFX 2.0 + NetBeans + Maven

Raf*_*fal 6 netbeans maven javafx-2

我正在使用NetBeans 7.0.1 创建JavaFX 2.0应用程序.当我以标准方式创建项目时,一切正常.不幸的是;)我需要Maven项目......

我没有在Maven存储库中找到JavaFX 2.0,所以我的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>
Run Code Online (Sandbox Code Playgroud)

设置JAVAFX_HOME系统变量:

C:\Users\rach>echo %JAVAFX_HOME%
C:\Program Files\Oracle\JavaFX Runtime 2.0\
Run Code Online (Sandbox Code Playgroud)

编译没问题,但是当我在NetBeans下启动程序时出现错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application at java.lang.ClassLoader.defineClass1(Native Method)
Run Code Online (Sandbox Code Playgroud)

但是jfxrt.jar在classpath中:

C:\>echo %CLASSPATH%
C:\Program Files\Oracle\JavaFX Runtime 2.0\lib\jfxrt.jar
Run Code Online (Sandbox Code Playgroud)

当我从命令行启动我的应用程序时它工作正常.

当我在运行时在本地存储库中安装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>
Run Code Online (Sandbox Code Playgroud)

影响:

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)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Sar*_*apa 5

谢谢您的帮助.

那些在这里使用JavaFX 2.0 SDK的人是简单的步骤

  1. 转到shell中的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>


小智 2

目前,这似乎是一个有效的解决方案。

首先,安装jfxrt.jar:

mvn install:install-file -Dfile=jfxrt.jar -DgroupId=com.oracle -DartifactId=javafx-runtime -Dpackaging=jar -Dversion=2.0
Run Code Online (Sandbox Code Playgroud)

然后将 bin 文件夹从下载的 JavaFX 运行时复制到本地 Maven 存储库 (home/.m2/repository/com/oracle/javafx-runtime/)

不是很优雅,但它对我有用..