2013-01-03 4 views
2

J'ai un projet Eclipse qui utilise JavaFX 2. Les fichiers FXML sont générés à l'aide de Scene Builder. Mon but est de créer un Jar exécutable. Peu importe de quelle façon j'ai essayé, je reçois toujours une erreur JavafX Launcher "Exception lors de l'exécution de l'application"/lors de l'exécution du fichier jar. La trace de la pile est ci-dessous.Impossible de déployer JavaFX 2 jar d'Eclipse

Les mêmes résultats si j'utilise les tâches antit JavaFX ou l'utilitaire javafxpackager.

Exception in Application start method 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.javafx.main.Main.launchApp(Main.java:642) 
    at com.javafx.main.Main.main(Main.java:805) 
Caused by: java.lang.RuntimeException: Exception in Application start method 
    at  com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:403) 
    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.NullPointerException 
    at controllers.Main.start(Unknown Source) 
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319) 
    at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:206) 
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:173) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29) 
    at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73) 
    ... 1 more 

Répondre

4

Le problème concernait les chemins relatifs dans le code. En référence à des images ou des fichiers FXML, j'utiliserais un chemin relatif. Cela a bien fonctionné lors de l'exécution directe à partir d'Eclipse, mais n'a pas fonctionné comme un pot exécutable. Changer les chemins à l'absolu a résolu le problème. EDIT: Pour quiconque trébuche sur cette erreur et utilise Scene Builder pour créer les fichiers FXML, notez que j'ai dû éditer les fichiers FXML générés depuis Scene Builder en utilisant un éditeur de texte pour convertir les chemins relatifs en absolus.

+0

Wow, ce message d'erreur était vraiment inutile pour déterminer la cause première du problème - un travail agréable pour le dépister. Vous pouvez marquer votre réponse personnelle comme correcte. – jewelsea

+0

Comment utiliseriez-vous un chemin absolu si vous fabriquez un pot? Pourriez-vous poster un exemple de la façon dont le chemin relatif était et comment le chemin absolu est? – Math

1

Si vous pouvez utiliser Maven, puis suivez this tutorial pour créer jar exécutable, exe .. etc

Maven Plugin pour JavaFX: Grâce à ce plugin, il est beaucoup, beaucoup plus facile de se lever et en cours d'exécution rapidement et de construire des lots de distribution complexes (tels que les fichiers exécutables JAR, installateurs natifs et webstart ensembles).

+0

Merci pour la suggestion, mais la conversion du projet eclipse en Maven prend du temps. J'ai trouvé le problème et l'ai posté dans les réponses. – alexb