Menu

Error invalid or corrupt jarfile [Résolu]

t - 27 mai 2018 à 13:14 - Dernière réponse :  t
- 16 juin 2018 à 20:50
Bonjour à tous,

Lorsque je tente de faire un package appx comprenant l'application et le Runtime Java et que je lance l'application, j'obtiens l'erreur suivante:

error invalid or corrupt jarfile C:\Program Files\WindowsApps\Éditeur.logiciel_1.0.0.0_x64\VFS\Program FilesX86\Éditeur\logiciel\logiciel.exe.

J'utilise JRE 8 32 bit, or, le package appx est configuré par défaut en 64 bit

Pensez-vous que cela à un rapport ?

Auriez-vous une idée pour réparer cela s'il vous plait ?

Merci
Afficher la suite 

Votre réponse

23 réponses

KX 15552 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 juin 2018 Dernière intervention - 27 mai 2018 à 13:37
0
Merci
Bonjour,

C'est quoi un package appx ? J'ai regardé un peu sur Google et je suis tombé sur une technologie Windows, mais quel rapport avec Java ? Qu'est-ce que tu cherches à faire ?

En Java, tu peux utiliser cette commande du JDK :
javapackager -makeall -appclass NomDeLaClasseMain -name NomDuProjet

Remarque : tu dois faire cette commande dans le dossier qui contient le répertoire "src" où sont tes .java
Cela va compiler le projet et l'encapsuler dans différents formats, notamment un installeur .exe qui contient une copie de la JRE pour ton projet et l'installera sur le système cible.

Voir la documentation : Self-Contained Application Packaging
KX 15552 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 juin 2018 Dernière intervention > t - 27 mai 2018 à 13:59
Si tu utilises la commande que je t'ai donné tu auras un fichier .exe qui contient un installeur (impression écran ci-dessous) qui copiera le JRE, le JAR, et créera des raccourcis pour y accéder.

Si ta JRE est en 32 bits ça copiera une JRE 32 bits sur le poste client, le fait que le package soit en 64 bits ne devrait rien changer, même si c'est dommage de ne pas mettre une JRE 64 bits directement...

Quant à la commande tu peux la taper directement dans une invite de commande, ou éventuellement la mettre un .bat pour la conserver, mais ce n'est pas utile plus que ça.
Avec ce Setup, je ne peut pas y introduire d'autre fichier (exe, bat...) qui accompagne le logiciel par hasard ?

Aussi, puis-je y mettre une application java convertie en exe ?
KX 15552 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 juin 2018 Dernière intervention > t - 27 mai 2018 à 14:15
Il faut regarder la documentation que je t'ai donné pour voir les cas d'usages avancés.
Il est notamment possible d'utiliser des logiciels tiers (InnoSetup, Wix) pour faire des installeurs plus poussés.
InnoSetup, Wix...

OK cool, je vais regarder cela et reviens vers vous
KX 15552 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 juin 2018 Dernière intervention > t - 27 mai 2018 à 14:29
Remarque : une JRE c'est standalone, il n'y a rien besoin d'installer sur un système pour qu'elle fonctionne, tu peux juste la décompresser et mettre tout son contenu (exe, dll, ...) directement dans ton package avec tout le reste de ton code.

Il faudra juste faire un bat ou équivalent qui lance la commande java -jar en faisant référence au java.exe de la JRE ainsi compressée (c'est ce que fait la commande javapackager)

NB. "puis-je y mettre une application java convertie en exe ?"
Ça n'a pas de sens de convertir une application en exe, ce sera ni plus ni moins ce que l'on essaye de faire, c'est à dire un copier-coller d'une JRE avec ton JAR.
Commenter la réponse de KX
0
Merci
Bonsoir,

J'ai donc réussi à faire un setup en lisant la doc cependant lorsque je package le tout en appx,
l’erreur resurgit, sauriez vous ce que signifie l'erreur en question (celle du titre) et das quel cas l'on peut s'en débarrasser s'il vous plaît ?

Aussi, jar2exe me permettrait-il d’exécuter un jar sans le Runtime ou non ?
KX 15552 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 juin 2018 Dernière intervention - 27 mai 2018 à 20:39
L'erreur "invalid or corrupt jarfile C:\...\logiciel.exe" en soit est assez simple, tu démarres un jar qui est un .exe
Ça ne peut pas être bon ! Pour lancer un jar il faut que ce soit un jar...

Remarque : jar2exe va faire la même chose que javapackager, il va copier la JRE dans un exe, parce qu'il n'y a pas de magie en Java, d'une manière ou d'une autre il te faudra une JRE.
Bonsoir,

Finalement j'avais déjà trouvé une solution dimanche et je tiens à vous en faire part au cas ou cela resurgit à l'avenir vu le manque de documentation sur ce sujet...

J'ai utilisé Advanced Installer en créant un package d'application pour application java (prenant en compte les jar converti en exe),

Il s'agit d'une fonctionnalité java application Installer disponible dans le logiciel

La méthode utilisée pour réaliser le package est similaire à celui de jar2exe.

Ensuite, il suffit de cliquer sur UWP Appx build sur la barre de menu.

Voilà, c'est aussi simple que ça,

La licence ne coûte que 200 €

Merci pour vos conseils.
Commenter la réponse de t
0
Merci
Bonjour,

Je reviens vers vous car lorsque je fais un test de conformité,

J'obtiens l’erreur suivante dans le fichier htm généré:

ÉCHEC
Vérification du Registre
Erreur détectée : Les vérifications de registre ont détecté les erreurs suivantes :

Plusieurs fichiers de Registre trouvés.

Impact si aucune correction n'est effectuée : Les applications ne doivent pas installer de pilotes ni de services NT.
Comment corriger : N'installez pas de pilotes ni de services NT.


Merci pour votre aide
KX 15552 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 juin 2018 Dernière intervention - 2 juin 2018 à 19:46
Bonjour,

Ceci n'est pas un problème Java, tu devrais plutôt poser cette question dans un autre forum (Windows par exemple).
Commenter la réponse de t
0
Merci
Bonjour,

Je me permet de rouvrir ce topic car je rencontre un soucis inattendue:

J'ai réussi à créer un package fonctionel sur ma machine cependant, lorsque ce dernier est lacer sur un autre poste, voici l'erreur obtenue :

"Impossible de charger la bibliothèque Java VM: C: \ Program Files (x86) \ logiciel \ logiciel \ jre \ bin \ client \ jvm.dll (errno = 126)."

Or, j'ai intégré java runtime dans mon package MSI et n'est pas censé cherché java dans un autre programme.

Comment puis-je reglé cela s'il vous plait ?

Qu'est ce que j'ai mal fais ?

PS: j'ai supprimé tous les fichiers de registres présents dans le package (je ne sais pas si cela à une incidence quelconque )

Merci pour votre aide
KX 15552 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 juin 2018 Dernière intervention > t - 14 juin 2018 à 13:50
Un code Java, ou un JAR, n'est pas spécifique 32 ou 64 bits, ni même spécifique Windows, Linux ou Max.
Bonjour,

J'ai converti mon application java en exe avec launch4j,

J'ai fais le test en lançant ce dernier avec le jre x64 et il semblerait que j'ai mal configurer ce dernier,

J'ai donc décidé de ne pas le convertir et de faire un simple raccourcis vers le bureau avec le logos du soft,

Je tente ça et on verra bien ce qui ce passe...
Re,

Bon,

Avant de faire un package à déposer,

J'ai tenté de reproduire l'erreur :

J'ai donc créer un package avec java 32 bit et un jar (converti avec launch4j configurer pour x64) et j'obtiens l'erreur souhaitée,

Pour corriger l'erreur,

J'ai tout fais pareil sauf que là, j'ai juste mis un jar capable de s'exécuter sur x64 et x86 (configuration du package),

Cela semble fonctionner,


Pensez vous que l'erreur était du à cela vous aussi ?

Merci
KX 15552 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 juin 2018 Dernière intervention - 16 juin 2018 à 11:55
"un jar capable de s'exécuter sur x64 et x86"
N'importe quel jar peut s'exécuter sur n'importe quelle architecture... c'est le principe de base de Java.
Toutes les erreurs que tu as autour ne sont plus liées à Java.
Oui, c'est ce que je dis,

J'ai simplement mis un .jar,

Auparavant, je faisais un application en .exe converti avec launch4j s'exécutant en x64 seulement

Merci
Commenter la réponse de t