如何从javaFX项目制作jar文件

Aga*_*ria 9 javafx-2

我有javaFX项目,我正在使用Eclipse IDE.这是使用Spring的Maven项目.我的目标是从这个项目中创建可运行的jar文件(dekstop应用程序).

如果我像任何其他java项目一样将我的应用程序导出到jar文件,那么我会在错误时收到:

C:\eclipse\projjars>java -jar EqMan.jar
Exception in thread "main" java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Can't load library: C:\eclipse\bin\glass.dll
        at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:276)
        at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:122)
        at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:163)
        at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
        at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.UnsatisfiedLinkError: Can't load library: C:\eclipse\bin\glass.dll
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.load0(Unknown Source)
        at java.lang.System.load(Unknown Source)
        at com.sun.glass.utils.NativeLibLoader.loadLibraryFullPath(NativeLibLoader.java:143)
        at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:56)
        at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:31)
        at com.sun.glass.ui.Application$1.run(Application.java:75)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.glass.ui.Application.loadNativeLibrary(Application.java:73)
        at com.sun.glass.ui.Application.loadNativeLibrary(Application.java:85)
        at com.sun.glass.ui.win.WinApplication.<clinit>(WinApplication.java:33)
        at com.sun.glass.ui.win.WinPlatformFactory.createApplication(WinPlatformFactory.java:20)
        at com.sun.glass.ui.win.WinPlatformFactory.createApplication(WinPlatformFactory.java:17)
        at com.sun.glass.ui.Application.Run(Application.java:108)
        at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:266)
        ... 5 more
Run Code Online (Sandbox Code Playgroud)

如果我正在尝试用javafxpackager制作jar文件,我收到这个错误:

C:\eclipse\workspace\equification>javafxpackager -makeall -appclass ru.igs.ava.equification.EquificationFX -name "Equification" -width 800 -height 600
warning: [options] bootstrap class path not set in conjunction with -source 1.5
C:\eclipse\workspace\equification\src\main\java\ru\igs\ava\equification\EqConfigureRole.java:5: error: package org.springframework.context does not exist
import org.springframework.context.ApplicationContext;
C:\eclipse\workspace\equification\src\test\java\ru\igs\ava\equification\AppTest.java:11: error: cannot find symbol
    extends TestCase
            ^
//and the same error for every class, which is added to my project as maven dependency.
Run Code Online (Sandbox Code Playgroud)

那么,如何在不将我的项目转换为NetBeans项目的情况下制作可运行的jar文件?

jew*_*sea 5

看到您正在为构建使用Maven,您也可以使用Maven启动JavaFX打包.为此,请使用Maven antrun插件调用JavaFX ant任务,以使用嵌入式JavaFX启动程序为您的应用程序生成jar.这是一个样本maven pom来做到这一点.


运行javafx打包程序时出现的错误是由于未正确设置打包程序的类路径.有关如何为javafx打包程序设置类路径以打包依赖于依赖lib jar的应用程序的示例,请参见此构建脚本.


不满意的链接错误是因为在运行应用程序时,相对于jfxrt.jar的运行时位置,您没有在../bin目录中包含所需的lib dll.您也可能无法使用JavaFX启动程序正确打包应用程序(通过执行推荐的javafx ant任务或javafxpackager命令来生成JavaFX应用程序jar).

更新

对于基于Maven的JavaFX应用程序构建,您现在可以使用Maven JavaFX插件.