我正在使用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: …Run Code Online (Sandbox Code Playgroud)