我正在使用 Intelij,但在打包 Java 应用程序时遇到一些问题。
我正在使用 Artifact 来打包我的应用程序。可以选择创建 Jar 包或 JavaFx 包。如果我使用 JavaFx 工件,我需要指定一个 Application
类来启动。我的包使用标准 java main(String[] args)
类型启动,因为它还可以选择严格从命令行运行(无 UI),因此此选项对我不起作用。
如果我创建一个 jar,我的 main
方法显然不知道 Application
类是什么:线程“main”java.lang 中的异常。 NoClassDefFoundError:javafx/application/Application
我完全缺少什么魔力?任何朝正确方向的碰撞将不胜感激。
最佳答案
如果您遇到此异常,那是因为您的类路径中没有 JavaFX 运行时。在 JavaFX 2.2 安装目录中,有一个名为 rt 的文件夹。在该文件夹内,您有 jfxrt.jar 和一些 native 库。
如果您想运行 JavaFX 应用程序,jfxrt.jar 必须包含在类路径中。你没有它,这就是为什么 Java 找不到 javafx.application.Application 类。
例如(在 Windows 中): C:\Program Files\Oracle\JavaFX 2.2 SDK\rt C:\Program Files\Oracle\JavaFX 2.2 SDK\rt\bin*.dll C:\Program Files\Oracle\JavaFX 2.2 SDK\rt\lib\jfxrt.jar
如果您使用 Oracle Java 8,则 jfxrt.jar
将自动位于运行时类路径中,因此您无需手动将 jfxrt.jar
添加到Java 8 的类路径。
关于java - Intellij 封装 JavaFx 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23046344/