2012-07-05 70 views
9

我有javaFX項目,我正在使用Eclipse IDE。這是使用Spring的Maven項目。 我的目標是從這個項目中創建可運行的jar文件(dekstop應用程序)。如何從javaFX項目製作jar文件

如果導出我的應用程序就像任何其他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 

如果我試圖與罐子的javafxpackager文件,我收到這樣的出錯:

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. 

那麼,如何在不將我的項目轉換爲NetBeans項目的情況下製作可運行的jar文件?

回答

5

鑑於您正在爲構建使用Maven,您還可以使用Maven啓動JavaFX打包。要做到這一點,請使用Maven antrun插件調用JavaFX ant tasks爲嵌入式JavaFX啓動程序爲您的應用程序生成jar。這是一個sample maven pom來做到這一點。


您在運行javafx打包程序時的錯誤是由於未正確設置打包程序的類路徑。如何爲javafx打包程序設置類路徑來打包依賴於依賴lib庫的應用程序的示例是build script


未被滿足的鏈接錯誤是因爲你不包括相對於jfxrt.jar的運行位置../bin目錄所需的lib dll的,當你運行你的應用程序。您也可能無法使用JavaFX啓動程序正確打包應用程序(通過執行建議的javafx ant任務或javafxpackager命令來生成JavaFX應用程序jar)。

更新

對於基於Maven的構建JavaFX應用程序,你現在可以使用Maven JavaFX plugin

0

由於懷疑基礎問題是由於jfxrt.jar與安裝的Java版本之間的不兼容而導致的。應用程序使用的jfxrt.jar與jdk-7u71兼容,但應用程序位於JAVA_HOME設置爲7.0.05的計算機上。所以我在有問題的機器上安裝了jdk-7u71並更新了JAVA_HOME。