【问题标题】:javafx running well in the ide (Netbeans), not starting from commandline [duplicate]javafx在ide(Netbeans)中运行良好,而不是从命令行开始[重复]
【发布时间】:2013-06-06 21:27:24
【问题描述】:

我有一个简单的 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 应用程序时,会出现很多这样的问题,需要大量的调优,所以我想知道最佳实践是什么。

【问题讨论】:

  • 您是否尝试将您的应用程序作为可执行 jar 运行?如果您想分发您的应用程序,您应该考虑将其所有依赖项打包在一个 jar 中。出于某种原因,NetBeans 不会为您执行此操作(Eclipse 会)。我使用 NetBeans 并且必须在两天前这样做......this answer 中描述的方法非常有效。

标签: java javafx-2


【解决方案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

用于打包到独立的 jar 中:

mvn jfx:build-jar

用于启动 jar:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多