我有一个简单的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