Convertir un .JAR en binaire linux

Résolu
haugure Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 21 avril 2011 - 20 avril 2011 à 09:27
haugure Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 21 avril 2011 - 21 avril 2011 à 17:47
Bonjour à tous,

J'ai un petit souci, après le développement d'un projet Java, un petit soft en ligne de commande, qui est en charge de convertir un XML en LaTeX, je viens de m'apercevoir que mon hébergeur (infomaniak) ne supporte pas java. Du coup je cherche un moyen de convertir mon JAR en binaire, j'ai téléchargé Excelsior JET (http://www.excelsior-usa.com/jet.html) qui fonctionne parfaitement sous Windows pour fournir un .EXE.

Mais vue que je n'ai pas de possibilité d'avoir Linux(interdit au bureau...), que je ne peu pas accéder au projet de chez moi via mon Ubuntu... Je n'ai accès à la machine linux que via le SSH sur le mutualisé sur lequel je ne peu y installer la version linux d'Excelsior JET.

Je me demandais du coup si il existait un moyen, un soft ou autre, me permettant de convertir depuis windows mon JAR en binaire Linux 32bit ?

En vous remerciant par avance !

7 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
21 avril 2011 à 12:52
Salut,

pour la génération d'une archive java en binaire linux tu peux compiler via GCJ... ton binaire n'auras besoin que de la librairie .so de GCJ que tu peux livrer avec (à mettre dan le path pour que le binaire retrouve ses petits)

exemple de compilation :
gcj -fjni -o mon_binaire --main=mon_package.ma_main_class mon_fichier_jar.jar

-fjni : si tu utilises du jni sinon tu peux ne pas mettre cette option.
-o mon_binaire : précise le nom du binaire à générer.
--main=mon_package.ma_main_class : précise le nom de la main class (syntaxe identique à celle du champ Main-Class du fichier manifest d'un jar).
mon_fichier_jar.jar : le fichier jar de ton application

Ensuite pense bien à embarquer ta lib gcj (/usr/lib/libgcj.so.5.0.0 - le nom peut changer en fonction de ta version)
Pour gagner en place tu peux faire un strip de la lib que tu vas livrer (PAS CELLE DU SYSTEME)
'strip libgcj.so.5.0.0'
tu renommes la lib gcj en libgcj.so.5 et ça roule
Pour avoir le nom complet tu peux faire un ldd de ton binaire comme ça tu renommes en fonction.




------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
3
Utilisateur anonyme
20 avril 2011 à 11:32
Bonjour

Ton hébergeur ne supporte pas JSP mais Java Web Start fera l'affaire, ce sera bien plus simple que de générer un exécutable par plateforme.

















T.U.E.R yeah! vive java
0
haugure Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 21 avril 2011
20 avril 2011 à 12:26
Bonjour,

Merci pour cette réponse.
J'avais en effet pensé à java web start, mais c'est un programme en ligne de commande pensé pour être exécute coté server (pas côté client).

Pour décrire simplement le processus complet du soft : le XML est un flux récupéré à la fin d'une session webdav ensuite il est extrait depuis Php pour etre analysé en ligne de commande par le programme java qui le converti en LaTeX ce fichier LaTeX est ensuite converti en DVI, PS PDF parsé par différente moulinettes Php pour ensuite alimenté une base de données Postgres SQL. Impossible de réécrire le programme Java en Php il s’appuie sur des bibliothèques qu'il m'est impossible de porter.

Je cherche donc du coup à compiler le JRE (c'est déjà un JRE exécutable) dans l'environnement du server mutualisé. je n'aurai pas besoin de le compiler sur différent environnement j'ai juste besoin de le compiler pour Linux 32bits de l'uploader sur le FTP puis de l'appeler depuis Php...
0
haugure Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 21 avril 2011
20 avril 2011 à 12:29
Une petite bourde il faut Lire Je cherche donc du coup à compiler le JRE JAR (c'est déjà un JRE JAR exécutable) dans la fin du message ci-dessus.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
20 avril 2011 à 13:19
Qu'est-ce qui t'empêche de mettre le JAR sur ton compte FTP et d'utiliser la commande "java -jar" pour lancer ton programme depuis PHP?? Par contre, bien évidemment, cela requiert que le serveur dispose d'une JVM.

Pour convertir une application Java en exécutable pour Linux, à une époque, il y avait GCJ mais ce n'est plus très maintenu et cela supportait une vieille version de Java.











T.U.E.R yeah! vive java
0
haugure Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 21 avril 2011
20 avril 2011 à 13:33
Je n'ai pas la commande java dispo sur le mutualisé, je pensais comme toi au début pis mes illusions sont tombé à néant :(

Pour GCJ oui c'est tout là mon souci, mon programme utilise une version de java trop récente pour GCJ j'ai fait de multiple test ce matin sans aucun succès, j'ai même réadapté mon code pour le rendre compatible avec des versions plus ancienne mais sans succès...

Je pense que je vais devoir compiler ca ou le faire compiler avec la version d’ essaie de Excelsior JET sous linux... Excelsior reste en mon sens la seule alternative qu'il me reste
0
haugure Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 21 avril 2011
21 avril 2011 à 17:47
Salut Twinuts !
Ensuite pense bien à embarquer ta lib gcj (/usr/lib/libgcj.so.5.0.0 - le nom peut changer en fonction de ta version)
Pour gagner en place tu peux faire un strip de la lib que tu vas livrer (PAS CELLE DU SYSTEME)
'strip libgcj.so.5.0.0'


C'est l'information qu'il me manquait pour faire fonctionner le tout ! J'avais abandonné avec GCJ pensant que mon application utilisait une version de java trop élevée (6)... mais en effet avec ce petit .so ca fonctionne :D, de plus j'utilise bien JNI alors ta ligne de commande j'ai eu juste à la copier collé ^^

Et bien vue que du coup j'ai presque terminé avec Excelsior (j'ai fini par me faire une archive du projet sur ma clef usb) je vais pouvoir comparer la rapidité des deux binaires obtenus et garder la plus performante :p

En tous cas je te remercie vivement pour cette info concernant GCJ !
0
Rejoignez-nous