Exécution des programmes console: ne fonctionnent qu'avec une ligne de commande
Bonjour,
Je rencontre un problème au niveau de l’exécution de mes jar par Windows. Depuis un moment déjà pour une raison qui m'est inconnue, il m'est impossible de lancer des programmes consoles. En revanche, les programmes fenêtrés fonctionnent sans problème. Après quelques recherches, j'ai réussi à faire marcher mes programmes consoles avec la commande "java -jar nomProgramme.jar".
Ce qui m'étonne c'est que la commande "java nomProgramme.jar" me donne "Erreur : impossible de trouver ou de charger la class principale nomduProgramme.jar" alors que la précédente fonctionne et que mon manifest.mf est valable. D'autant plus que je ne comprend pas que Windows puisse lancer les programmes fenêtrés et pas les programmes console. Y'a t-il un moyen pour que Windows exécute correctement les programmes consoles sans avoir à passer par la commande "java -jar nomProgramme.jar" ?
Je suis sur Windows 8.1, mon Jdk et Jre sont en version 1.8.0_45 (Version 64 bits). J'utilise Eclipse Kepler. Mes variables d'environnement pointent de la façon suivante :
PATH : Sur mon Jdk\bin (Entre autre)
JAVA_HOME : Sur mon Jdk
CLASSPATH : Sur mon Jdk\lib\tools.jar, le répertoire courant et mon dossier JInput
J'ai effectué des tests avec 2 programmes détaillés ici :
TestConsole :
Arborescence sur Eclipse:
http://img15.hostingpics.net/pics/746071TestConsole.png
Adresse de la main class au sein du .jar : testConsole\TestConsoleMain.class
Contenu du manifest.mf :
Citation:
Manifest-Version: 1.0
Class-Path: .
Main-Class: testConsole.TestConsoleMain
Class principale: TestConsoleMain
Code:
1 2 3 4 5 6 7 8 9
| package testConsole;
public class TestConsoleMain {
public static void main(String[] args) {
System.out.println("Fonctionner ou ne pas fonctionner, telle est la question.");
}
} |
TestFenetre :
Arborescence sur Eclipse:
http://img15.hostingpics.net/pics/342826TestFenetre.png
Adresse de la main class sein du .jar : testFenetre\TestFenetreMain.class
Contenu du manifest.mf :
Citation:
Manifest-Version: 1.0
Class-Path: .
Main-Class: testFenetre.TestFenetreMain
Classe principale : TestFenetreMain
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package testFenetre;
import javax.swing.JFrame;
public class TestFenetreMain {
public static void main(String[] args) {
JFrame fenetre = new JFrame();
fenetre.setLocationRelativeTo(null);
fenetre.setSize(300, 300);
fenetre.setResizable(true);
fenetre.setTitle("Test fenetre");
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.setVisible(true);
}
} |
Ceux-ci ont été exportés depuis Eclipse (en tant que Runnable). Voici ce que j’obtiens :
Dans le cas d'un programme java fenêtré (TestFenetre.jar):
-Double-clic : Lancement sans problèmes.
-Ligne de commande "TestFenetre.jar" : Lancement sans problèmes.
-Ligne de commande "java TestFenetre.jar" : "Erreur : impossible de trouver ou de charger la classe principale TestConsole.jar"
-Ligne de commande "java -jar TestFenetre.jar" : Lancement sans problèmes.
Dans le cas d'un programme java console (TestConsole.jar):
-Double-clic : Rien ne se passe
-Ligne de commande "TestConsole.jar" : La commande est prise en compte (saut de ligne, pas de message d'erreur) mais rien ne se passe.
-Ligne de commande "java TestConsole.jar" : "Erreur : impossible de trouver ou de charger la classe principale TestConsole.jar"
-Ligne de commande "java -jar TestConsole.jar" : Lancement sans problèmes.
J'ai également tenté de compiler mes classes en ligne de commande ("javac nomClass.java") mais j'obtiens des erreurs similaires :
TestConsole :
"java TestConsoleMain" : "Erreur : impossible de trouver ou de charger la classe principale TestConsoleMain"
TestFenetre :
"java TestFentreMain" : "Erreur : impossible de trouver ou de charger la classe principale TestFenetreMain"
Je ne comprends pas qu'il me dise qu'il ne trouve pas la classe principale lors des commandes "java nomProgramme.jar" alors que l’arborescence et le manifest.mf sont justes. Le plus étrange reste cette différenciation entre les programmes console et les programmes fenêtrés.
En vous remerciant pour vos lumières sur ce problème =)