Archive jar qui ne se lance pas [Résolu/Fermé]

Signaler
-
 Kellodie -
Bonjour,

J'ai un problème suite à une archive jar que j'essaie de faire. À priori, tout est bon, mais le fichier .jar ne veut pas se lancer. Or, si je met ce fichier sur une clé USB et que j'essaie de l'ouvrir à partir de celle-ci, alors le fichier s'ouvre et fonctionne sans problème. J'ai essayé de lancer le fichier sur mon ordinateur à partir de l'invite de commandes en mode Administrateur, et il m'affiche le message suivant : "Impossible de trouver ou charger la classe principale". Et étonnamment, le même message s'affiche pour le fichier présent sur la clé USB (fichier qui s'ouvre sans problème). Cela fait déjà quelques temps que je me penche sur le problème, en vain.

Est-ce que quelqu'un aurait une idée de comment résoudre ce problème, et d'où cela pourrait venir ?

Merci beaucoup.

1 réponse

Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 858
Bonjour,

Est-ce que tu pourrais décompresser le jar (c'est un fichier zip), nous copier-coller l'arborescence du dossier (
tree /F
sur Windows) et le contenu du fichier
META-INF/MANIFEST.MF
?
Oui, au-dessus excuse-moi
Je voulais dire quand j'exécute avec le .java, tout fonctionne parfaitement. Mais pas avec un .jar au même endroit...
Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 858 > Kellodie
Est-ce que tu pourrais copier-coller le morceau de code qui fait l'écriture pour essayer de reproduire.
public String chaine = "";
private String repertoire = "/";
try {
File fichier = new File(repertoire + chaine + ".txt");
PrintWriter out = new PrintWriter(new FileWriter(fichier));
out.close();
} catch(IOException e) {
e.printStackTrace();
}
Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 858 > Kellodie
Si tu fais
new File("/" + ...)
le fichier créé sera à la racine du lecteur.

Donc C:\ sur Windows (sur lesquels tu n'as pas les droits) ou H:\ sur ta clé USB (ou une autre lettre...) sur laquelle tu as les droits, d'où la différence de traitement.

Tu devrais afficher le chemin d'accès du fichier pour voir où il essaye d'écrire :

File fichier = new File(repertoire + chaine + ".txt");
System.out.println(fichier.getAbsolutePath());

Remarque : depuis Java 7 il est préférable d'utiliser des try-with-resources pour les fichiers, cela permet de laisser Java s'occuper de la fermeture des flux (close) y compris en cas d'erreur, c'est plus fiable.

try (PrintWriter out = new PrintWriter(new FileWriter(fichier))) { // try-with-resources
    // ...
} catch(IOException e) { 
    e.printStackTrace(); 
}
Bonjour,
Mon problème est enfin réglé, merci beaucoup pour ton aide, et ça m'aura appris une chose ou deux

Merci encore :)