J'ai travaillé sur l'emballage d'un projet récemment, mais il est devenu un cauchemar. Alors, voici le problème en un mot. J'ai un projet que j'aimerais avoir comme fichier jar, et je l'utiliserai éventuellement comme Java Web Start. Lorsque j'essaie de générer et d'exécuter le code via Eclipse, cela fonctionne correctement. Cependant, lorsque je l'exporte en tant que "jarre runnable" et que j'essaie de l'exécuter via le terminal, j'obtiens des exceptions cryptiques qui semblent dépendre des bibliothèques référencées. J'ai vérifié que les bibliothèques sont présentes dans le fichier jar, donc ce n'est pas qu'elles sont manquantes.L'exécution échoue via java -jar alors que le même code s'exécute correctement à travers l'éclipse
Selon la façon dont je l'exporte, les spécificités de l'exception changent alors qu'il semble provenir du même problème. Vous trouverez ci-dessous la trace de pile générée lorsque le projet est exporté avec des bibliothèques dépendantes empaquetées en tant que jarres dans le fichier "principal".
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.ExceptionInInitializerError
at org.eclipse.gef.tools.MarqueeSelectionTool.<init>(MarqueeSelectionTool.java:99)
at org.gvt.MarqueeZoomTool.<init>(MarqueeZoomTool.java:16)
at org.gvt.action.MarqueeZoomToolAction$1.<init>(MarqueeZoomToolAction.java:28)
at org.gvt.action.MarqueeZoomToolAction.createTool(MarqueeZoomToolAction.java:28)
at org.gvt.action.AbstractGEFToolAction.<init>(AbstractGEFToolAction.java:24)
at org.gvt.action.MarqueeZoomToolAction.<init>(MarqueeZoomToolAction.java:20)
at org.gvt.TopMenuBar.createBarMenu(TopMenuBar.java:113)
at org.gvt.ChisioMain.createMenuManager(ChisioMain.java:612)
at org.eclipse.jface.window.ApplicationWindow.addMenuBar(ApplicationWindow.java:235)
at org.gvt.ChisioMain.main(ChisioMain.java:144)
... 5 more
Caused by: java.lang.IllegalArgumentException: Argument cannot be null
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.graphics.Resource.<init>(Unknown Source)
at org.eclipse.swt.graphics.Cursor.<init>(Unknown Source)
at org.eclipse.draw2d.Cursors.<clinit>(Cursors.java:170)
... 15 more
Soit dit en passant, j'ai sauvé la sortie XML/ANT du processus d'exportation que je pouvais lui ajouter si elle pourrait être d'intérêt. J'ai choisi de l'omettre pour moins d'encombrement.
Des idées sur ce qui pourrait être le problème ici?
EDIT: Je commence à penser si c'est un problème 32/64-bit avec la bibliothèque SWT-GTK. Quelqu'un peut-il confirmer ou infirmer cela?
IIRC, Eclipse vous permet de spécifier un autre classpath que vous avez sur la ligne de commande; il se peut que certaines dépendances/bibliothèques soient manquantes dans votre fichier JAR. – Piskvor
Pour autant que je sache, toutes les bibliothèques sont incluses dans le fichier jar, j'ai particulièrement vérifié le paquetage swt: swt-3.4.2-gtk-linux-x86.jar. Comme pour le chemin de classe, il n'y a rien de spécifique dans les configurations d'exécution. C'est vraiment bizarre car j'ai réussi à faire la même chose avec une version plus ancienne du même projet, et je ne me souviens pas d'avoir eu autant de problèmes avec ça. – posdef
Si sur ** Windows ** essayez d'exécuter en tant que ** Administrateur ** –