haugure
Messages postés5Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention21 avril 2011
-
20 avril 2011 à 09:27
haugure
Messages postés5Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention21 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 ?
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 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 ..."
haugure
Messages postés5Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention21 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...
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.
haugure
Messages postés5Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention21 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
haugure
Messages postés5Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention21 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 !