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:
Adresse de la main class au sein du .jar : testConsole\TestConsoleMain.class
Contenu du manifest.mf :
Class principale: TestConsoleMainManifest-Version: 1.0
Class-Path: .
Main-Class: testConsole.TestConsoleMain
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Adresse de la main class sein du .jar : testFenetre\TestFenetreMain.class
Contenu du manifest.mf :
Classe principale : TestFenetreMainManifest-Version: 1.0
Class-Path: .
Main-Class: testFenetre.TestFenetreMain
Ceux-ci ont été exportés depuis Eclipse (en tant que Runnable). Voici ce que j’obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
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 =)
Partager