我有一个简单的javafx应用程序,我尝试过maven javafx插件。
它似乎工作,但当我尝试从命令行启动应用程序时,我得到:
Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application
所以它找不到javafx库。所以我确保Netbeans发布的jvm与我在命令行中使用的jvm相同。
这是Netbeans(7.3)调试的第一行:
cd C:\Users\agostino\Documents\NetBeansProjects\myapp; "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:\Users\agostino\Documents\NetBeansProjects\myapp>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应用程序时会出现很多这样的问题,需要进行大量的调整,所以我想知道最佳实践是什么。
答案 0 :(得分:1)
我正在使用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
用于包装到独立罐子:
mvn jfx:build-jar
启动jar:
java -jar target/App-1.0-jfx.jar