Convertir un .JAR en binaire linux [Résolu]

haugure 5 Messages postés mercredi 2 février 2005Date d'inscription 21 avril 2011 Dernière intervention - 20 avril 2011 à 09:27 - Dernière réponse : haugure 5 Messages postés mercredi 2 février 2005Date d'inscription 21 avril 2011 Dernière intervention
- 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 !
Afficher la suite 

7 réponses

Répondre au sujet
Twinuts 5261 Messages postés dimanche 4 mai 2003Date d'inscription 20 avril 2018 Dernière intervention - 21 avril 2011 à 12:52
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Twinuts
Utilisateur anonyme - 20 avril 2011 à 11:32
0
Utile
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
Commenter la réponse de Utilisateur anonyme
haugure 5 Messages postés mercredi 2 février 2005Date d'inscription 21 avril 2011 Dernière intervention - 20 avril 2011 à 12:26
0
Utile
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...
Commenter la réponse de haugure
haugure 5 Messages postés mercredi 2 février 2005Date d'inscription 21 avril 2011 Dernière intervention - 20 avril 2011 à 12:29
0
Utile
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.
Commenter la réponse de haugure
Utilisateur anonyme - 20 avril 2011 à 13:19
0
Utile
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
Commenter la réponse de Utilisateur anonyme
haugure 5 Messages postés mercredi 2 février 2005Date d'inscription 21 avril 2011 Dernière intervention - 20 avril 2011 à 13:33
0
Utile
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
Commenter la réponse de haugure
haugure 5 Messages postés mercredi 2 février 2005Date d'inscription 21 avril 2011 Dernière intervention - 21 avril 2011 à 17:47
0
Utile
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 !
Commenter la réponse de haugure

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.