javafx在ide (Netbeans)中运行良好,而不是从命令行启动



我有一个简单的javafx应用程序,我已经尝试了maven javafx插件。
它似乎可以工作,但是当我尝试从命令行启动应用程序时,我得到:

Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application

所以它找不到javafx库。所以我要确保Netbeans启动的jvm和我在命令行中使用的jvm是相同的。

这是Netbeans(7.3)调试的第一行:

cd C:UsersagostinoDocumentsNetBeansProjectsmyapp; "JAVA_HOME=C:\Program Files\Java\jdk1.7.0_21" ""C:\Program Files\NetBeans 7.3\java\maven\bin\mvn.bat"" "-Dexec.args=-classpath %classpath com.test.myapp.AppView -Dlog4j.debug=true" "-Dexec.executable=C:\Program Files\Java\jdk1.7.0_21\bin\java.exe" process-classes org.codehaus.mojo:exec-maven-plugin:1.2.1:exec

,这是我从命令行做的测试:

C:UsersagostinoDocumentsNetBeansProjectsmyapp>java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

因为我只有一个jvm版本的安装,所以它必须是相同的。

那这是怎么回事?

是否有其他测试可以帮助我调试应用程序启动?

另外,我非常担心在客户端上分发javafx应用程序时,会有很多这样的问题,这将需要大量的调优,所以我想知道最佳实践是什么。

我使用zonski/javafx-maven-plugin,这是我的设置:

<plugin>
    <groupId>com.zenjava</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>1.5</version>
    <configuration>
        <mainClass>your.main.class</mainClass>
    <vendor>you.name</vendor>
    </configuration>                
</plugin>

用于从命令行启动App:

mvn  jfx:run

用于打包到一个独立的jar:

mvn jfx:build-jar

用于启动jar:

java -jar target/App-1.0-jfx.jar

最新更新