[RESOLU] Sous Eclipse l'exécution marche bien mais pas avec la comm

Sous Eclipse l'exécution marche bien mais pas avec la comm [RESOLU] - Java - Programmation

Marsh Posté le 20-09-2009 à 13:21:16    

Bonjour,
 
Voila je suis sous Eclipse et mon programme compile et s'exécute impec.
J'ai mes .java dans un repertoire .java et les .class dans un repertoire bin.
J'exporte avec Fat jar exporter car j'ai une bibliothèque externe (jdom) que j'ai mis dans un repertoire plugins
 
Quand je veux exécuter mon programme  
 

Code :
  1. YoApp$ java -splash:conf/splash.png HelloWorld
  2. Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
  3. Caused by: java.lang.ClassNotFoundException: HelloWorld
  4. at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
  5. at java.security.AccessController.doPrivileged(Native Method)
  6. at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  7. at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
  8. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
  9. at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
  10. at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
  11. Could not find the main class: HelloWorld.  Program will exit.
  12. yo@yo-laptop:~/workspace/YoApp$


 
J'ai un peu de mal. Pouvez vous m'aider ?


Message édité par Yop69 le 23-09-2009 à 22:17:46
Reply

Marsh Posté le 20-09-2009 à 13:21:16   

Reply

Marsh Posté le 21-09-2009 à 02:53:04    

Si tu exportes ton application dans un jar, tu dois passer le fichier jar en paramètre à java:
 
java -jar monappli.jar mon.package.HelloWorld
 
Tu peux aussi mettre le nom de la classe contenant le point d'entrée principal (la méthode main) dans le fichier MANIFEST.MF dans le jar avec la propriété "Main-Class". Dans ce cas, donner le jar en paramètre suffit:
 
java -jar monappli.jar

Reply

Marsh Posté le 21-09-2009 à 04:34:46    

Si je fais ceci

Code :
  1. java -jar YoApp.jar -splash:conf/splash.png HelloWorld

, je perds mon splashscreen (enfin j'ai mon exception normale), et je ne sais pas quoi mettre à la place de java -jar monappli.jar mon.package.HelloWorld . C'est vraiment bête mais je bute :(
 
Concernant le fichier manifest j'aimerais bien m'en servir mais la aussi je bute :(
Si je fais java -jar monappli.jar j'ai mon execption qui est levée vu que je n'ai pas mon splashscreen
 

Manifest-Version: 1.0
 
Main-Class: HelloWorld
 
Class-Path: ./java
 
Created-By: xxx 1.5.0_06 (Sun Microsystems Inc.)


Message édité par Yop69 le 08-12-2009 à 12:38:05
Reply

Marsh Posté le 21-09-2009 à 13:48:51    

sauf erreur de ma part, tu dois mettre les arguments de ton appli après le nom de la classe:

Code :
  1. java -jar YoApp.jar HelloWorld -splash:conf/splash.png

Reply

Marsh Posté le 21-09-2009 à 15:16:31    

Tu as raison pataluc mais ici le paramètre splash doit être passé à la JVM et pas à l'appli puisque c'est un SplashScreen standard géré par la JVM.
 
Yop69, si tu veux utiliser un SplashScreen avec une appli packagée dans un jar, tu dois mettre le SplashScreen dans le jar et ajouter cette ligne dans le MANIFEST.MF :
 
SplashScreen-Image: conf/splash.png
 
(comme indiqué dans la doc de Sun)
 
Et le package dont je parlais c'est au cas où ta classe HelloWorld se trouve dans un package mais si ce n'est pas le cas tu dois juste mettre le nom de la classe.


Message édité par cbeyls le 21-09-2009 à 15:18:43
Reply

Marsh Posté le 21-09-2009 à 18:47:01    

Merci à vous de m'aider. En ce qui concerne la commande java celle c'est ca qui marche :

Code :
  1. java -splash:conf/splash.png -jar YoApp.jar


 
Après avec le fichier manifest, je n'arrive pas à lancer la commande java en prenant en compte ce fichier. Car il me démarre l'appli dans lancer le splashscreen (indiqué dans le fichier manifest par SplashScreen-Image: conf/splash.png )  :sweat:

Reply

Marsh Posté le 22-09-2009 à 00:22:49    

Tu as mis le fichier splash.png dans un dossier "conf" à l'intérieur du fichier jar ?

Reply

Marsh Posté le 22-09-2009 à 00:43:15    

humm je suis bête, dans le .jar, il est à la racine, mais dans mon projet la ou je lance la commande, il est dans le dossier conf.
 
En corrigeant le manifest
 

Code :
  1. Manifest-Version: 1.0
  2. Main-Class: HelloWorld
  3. Class-Path: ./YoApp.jar
  4. SplashScreen-Image: splash.png
  5. Created-By: xxx 1.5.0_06 (Sun Microsystems Inc.)


 
J'ai toujours une exception que je lance dans ma classe Splash :( qui m'empeche d'avoir mon splashscreen ! (l'appli est bien lancée après)
 

Code :
  1. yo@yo-laptop:~/workspace/YoApp$ java -jar YoApp.jar
  2. Exception in thread "Thread-1" java.lang.IllegalStateException: Splash >> no overlay image available
  3. at Splash.run(Splash.java:15)
  4. at java.lang.Thread.run(Thread.java:619)


Message édité par Yop69 le 08-12-2009 à 12:38:45
Reply

Marsh Posté le 22-09-2009 à 00:45:54    

Je crois avoir compris...
En fait Eclipse doit me générer un manifest et bien sur il oublie le splash.png :(

Reply

Marsh Posté le 22-09-2009 à 00:47:51    

Ok j'ai trouvé !!
Lors de l'export du jar j'ai tout simplement une option qui me permet de selectionner un manifest externe...  :whistle:  
 
Désolé pour le dérangement ;)
 
Merci de ton aide !
 
(j'aime bien comme tu sors de ta tanière après minuit  :D ). Tu travailles pas le lendemain ? tu es étudiant ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed