-
Problème de Jar
Bonjour à tous :)
Je suis en train de développer un petit outil remaniant une archive Jar exécutable pour y remplacer certains fichiers (tout en conservant leurs noms) en fonction de paramètres système.
Tout fonctionne très bien, mais le jar obtenu m'envoie dans les dents un could not find the main class à l'exécution.
Un manifest foireux me direz-vous?
Pas vraiment, car si je décompresse ce jar à la main avec quickzip, puis que je le recompresse, ce nouveau jar fonctionne parfaitement...alors qu'il est strictement identique au premier (hormis quelques octets de plus, sans doute issus d'un taux de compression différent).
Pour info, le jar est construit avec cette méthode :
http://www.java2s.com/Code/Java/File...ateJarfile.htm
Quelqu'un peut me donner une piste pour comprendre ce comportement étrange?
Merci beaucoup ^^
-
un exempel du jar foireux serait peut etre plus utile :)
-
Le jar obtenu est disponible ici : http://marloc.lescigales.org/TwinJarParadox/jar1.jar
après décompression/recompression, j'obtiens celui-ci, s'exécutant correctement:
http://marloc.lescigales.org/TwinJarParadox/jar2.jar
étrange, non? ^^
-
d'après mon outils pour les zip, le premier est corrompu. On peux voir le code qui a généré ce jar?
Edit: non c'est bon mauvais téléchargement.
Dans le premier les entrées on la forme
META-INF\MANIFEST.MF
com\simonstuffs\onejar\.....
hors, dans le format zip, et pour java, le séparateur de dossier c'est le / (dans l'autre sens donc).
Donc, revoyez vos noms
Aussi, je vois deux entrée MANIFEST.MF, une avec les / une avec les \, pas bon ça ;)
-
Effectivement c'était bien ça le problème, je réutilisais directement le nom de mes fichiers (stockés dans un dossier temporaire) pour générer mes JarEntry, ce qui mettait un mauvais File séparator dans l'arborescence du jar.
Un petit replaceAll("\\\\", "/") et tout rentre dans l'ordre ^^
Merci beaucoup pour le coup de main :P