我正在使用Intelij,我在打包Java应用程序时遇到了一些麻烦。
我正在使用神器来打包我的应用。可以选择创建Jar包或JavaFx包。如果我使用JavaFx工件,我需要指定一个Application
类来启动。我的包使用标准的java main(String[] args)
类型启动,因为它也可以从命令行(没有UI)严格运行,所以这个选项对我不起作用。
如果我改为创建一个jar,我的main
方法显然不知道Application
类是什么:Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application
我完全错过了什么魔法?任何正确方向的碰撞都将非常受欢迎。
答案 0 :(得分:2)
如果你有这个例外,那是因为你没有在你的类路径中拥有JavaFX运行时。在JavaFX 2.2安装目录中,有一个名为rt的文件夹。在文件夹中,您有jfxrt.jar和一些本机库。
如果要运行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的类路径中。