2012-07-05 42 views
9

Ho un progetto javaFX, con cui sto lavorando su Eclipse IDE. Questo è il progetto Maven con l'uso di Spring. Il mio obiettivo è rendere il file jar eseguibile (applicazione dekstop) da questo progetto.Come creare un file jar dal progetto javaFX

Se posso esportare la mia domanda di file jar come qualsiasi altro progetto java, poi ricevo questo in caso di errore:

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 

se sto cercando di fare file jar con javafxpackager, ricevo questo errore:

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. 

Così, come posso fare file jar runable senza convertire il mio progetto a progetto NetBeans?

risposta

5

Visto che stai usando Maven per le tue build, puoi anche usare Maven per avviare la confezione JavaFX. Per fare ciò utilizzare il plug-in Maven antrun per richiamare lo JavaFX ant tasks per generare un jar per l'applicazione con un launcher JavaFX incorporato. Ecco un sample maven pom per farlo.


I suoi errori nella gestione del confezionatore JavaFX sono causa di non impostare in modo appropriato il percorso di classe per il packager. Un esempio di come impostare il classpath per il javafx packager per il pacchetto di un'applicazione che si basa su lib jar dipendenti è in questo build script.


gli errori di collegamento insoddisfatti sono perché non si includono le necessarie dll lib trova in una directory ../bin relativo alla posizione di esecuzione di jfxrt.jar quando si esegue la vostra applicazione. Inoltre, potrebbe non essere possibile impacchettare correttamente l'applicazione con un programma di avvio JavaFX (eseguendo le attività javafx ant form o i comandi javafxpackager per generare il jar dell'applicazione JavaFX).

Aggiornamento

Per basata Maven build di applicazioni JavaFX, è ora possibile utilizzare un Maven JavaFX plugin.

0

Partendo dal sospetto che il problema sottostante sia dovuto a un'incompatibilità tra jfxrt.jar e la versione di Java installata ha funzionato per me. Il file jfxrt.jar utilizzato dall'applicazione era compatibile con jdk-7u71, tuttavia l'applicazione si trovava su una macchina in cui JAVA_HOME era impostato su 7.0.05. Così ho installato jdk-7u71 sul computer problematico e aggiornato JAVA_HOME.

Problemi correlati