2012-07-05 86 views
9

Tengo el proyecto javaFX, con el que estoy trabajando en Eclipse IDE. Este es el proyecto de Maven con el uso de Spring. Mi objetivo es hacer un archivo jar ejecutable (aplicación dekstop) de este proyecto.Cómo hacer un archivo jar desde el proyecto javaFX

Si puedo exportar mi solicitud de archivo jar como cualquier otro proyecto java, entonces yo recibo este error:

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 

Si estoy tratando de hacer archivo frasco con javafxpackager, que recibo este error:

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. 

Entonces, ¿cómo puedo hacer un archivo jar ejecutable sin convertir mi proyecto al proyecto NetBeans?

Respuesta

5

Como está utilizando Maven para sus versiones, también puede usar Maven para iniciar el empaque de JavaFX. Para ello, utilice el complemento Maven antrun para invocar el JavaFX ant tasks y generar un jar para su aplicación con un iniciador JavaFX incrustado. Aquí hay un sample maven pom para hacer esto.


Sus errores en la ejecución del paquete javafx se deben a que no se ha configurado correctamente la ruta de clase para el empaquetador. Un ejemplo de cómo establecer la ruta de clase para el paquete javafx para empaquetar una aplicación que se basa en archivos jar de lib dependientes se encuentra en este build script.


Los errores de enlace son insatisfechas porque no está incluyendo las DLL lib requeridos en un directorio ../bin relativa a la ubicación en tiempo de ejecución de jfxrt.jar al ejecutar la aplicación. También es posible que no empaque su aplicación correctamente con un iniciador JavaFX (mediante la ejecución de las tareas javafx ant recomendadas o los comandos javafxpackager para generar su jar de aplicación JavaFX).

actualización

Por basada Maven construye de aplicaciones JavaFX, ahora se puede utilizar un Maven JavaFX plugin.

0

Pasando de la sospecha de que el problema subyacente se debe a una incompatibilidad entre jfxrt.jar y la versión de Java instalada funcionó para mí. La aplicación jfxrt.jar que estaba usando la aplicación era compatible con jdk-7u71, pero la aplicación estaba en una máquina donde JAVA_HOME se configuró en 7.0.05. Así que instalé jdk-7u71 en la máquina problema y actualicé JAVA_HOME.

Cuestiones relacionadas