#1 Le 08/09/2008, à 00:31
- Lord Kluivert
[ résolu ] Comment optimisé et transformé un .jar en .deb ?
Dans le cadre d'un projet master informatique, mon équipe et moi avons réaliser un gestionnaire de fichier pour Ubuntu, qui utilise le protocole FISH en JAVA, avec une IHM en glade et gtk. On l'a développé sous Eclipse et donc on a créer notre .jar du logiciel avec.
Cependant notre .jar ne peut pas fonctionner tous seul :
1/ l'application utilise des fichiers glade et des images qui sont répertorier dans un dossier "data" que nous avons été obliger de sortir du .jar pour qu'il soit vu par nos classes, alors que tous fonctionnait bien sous eclipse.
2/ l'application utilise 2 librairies (gtk-4.0.jar, glade2.12.jar) sous eclipse pour fonctionner, que nous avons réussi a inclure dans le .jar, cependant l'une de ses librairie utilise une librairie native (libgtkjni-4.0.so) que nous n'arrivons pas a inclure dans le .jar
S'est pourquoi, pour le moment le projet se présente sous la forme d'un dossier :
/main directory/
-- projet.jar
-- /data/
-- libgtkjni-4.0.so
-- lanceur
// le fichier "lanceur" n'est rien d'autre qu'un script éxécutable qui lance la commande suivante :
// java -jar -Djava.library.path=. projet.jar (unique moyen que nous avons trouver pour indiqué à java qu'il dois
// chercher la librairie native dans le répertoire du .jar et ainsi trouvé le fichier "libgtkjni-4.0.so")
Conclusion :
Est-ce que nous pouvons compacter le projet encore plus (juste le .jar serait magnifique) ?
Et enfin, la cerise sur le gateau, comment transformer le projet en .deb ? pour le distribué plus facilement à la communauté (GPL oblige )
Voila, s'est tous pour moi, merci d'avance et longue vie à Ubuntu.
Dernière modification par Lord Kluivert (Le 10/09/2008, à 17:29)
Hors ligne
#2 Le 08/09/2008, à 03:24
- meushi
Re : [ résolu ] Comment optimisé et transformé un .jar en .deb ?
salut
bon je suis pas pro de java, mais je tente.
1/si ca passait avec éclipse, il devrait suffire d'utiliser la même commande que lui pour lancer votre jar, une commande qui a des chances d'être plutôt longue.
2/le principe de l'optimisation, c'est d'avoir le jar le plus petit possible on est d'accord ? à partir de là, les librairies glade sont présentes dans les dépots, donc il faudrait faire un paquet incluant une dépendance vers ces librairies (à priori libglade-java ou libglade-jni et libgtk-jni), et faire en sorte que l'application java soit renseignée des chemins vers ces librairies dans son classpath (donc dans la commande de lancement qui doit être plutôt longue)
pour le packaging, j'ai ces deux adresses:
http://www.sukria.net/fr/libreast/#1
http://linuxdevices.com/articles/AT8047723203.html
bon courage à vous = )
Hors ligne
#3 Le 08/09/2008, à 08:19
- Lord Kluivert
Re : [ résolu ] Comment optimisé et transformé un .jar en .deb ?
Salut meushi, merci d'avoir répondu aussi vite et aussi tard
Concernant le 1/ je souhaite faire un .jar exécutable, donc j'aimerai éviter d'avoir une commande a rallonge ou non standard, qui me forcerai à garder mon fichier "lanceur". Pour le 2/ l'objectif des 2 librairies que j'ai inclu dans le .jar est justement de faire fonctionner l'application sans installer les librairies glade et gtk.
Je vais tester l'application sur un live cd Ubuntu Hardy, pour confirmé qu'elle fonctionne.
[EDIT] l'application fonctionne sur le live cd une fois qu'on a installer : sun-java6-jre.
Mais à l'heure actuelle, je crois que la seul dépendance que je peux identifier s'est : java 1.6, car j'utitlise la classe Desktop.
Enfin concernant le .deb, je suis novice et je n'ai pas trouver d'explication, dans la documentation officielle pour les .jar, uniquement pour les fichiers sources que l'on récupère sur le net et qu'on installe avec des (.configure, make install). Mais merci pour les liens je checkrai.
Dernière modification par Lord Kluivert (Le 08/09/2008, à 10:11)
Hors ligne
#4 Le 08/09/2008, à 10:55
- obiwankennedy
Re : [ résolu ] Comment optimisé et transformé un .jar en .deb ?
il est peu courrant dans la distribution de logiciel libre pour linux d'inclure les bibliohèques. 1/ le poids des paquets seraient vite attroces. L'idée d'un paquet est justement de dire "mon logiciel à besoin de ça ,de ça et de ça" avec ces informations le gestionnaire de paquet installe une seule fois la bibliothèque.
2/ Si il y a une faille de sécurité dans une lib, le travail d'update est impossible car le système de paquet ne sait pas que la lib à mettre à jour est présente plusieurs fois dans le systemes.
3/distributer un progr avec les lib incluses c'est faire du windows.
4/ je comprends que tu souhaites avoir une application "out of box".
donc pour le .deb si tu regardes azureus et son paquet tu vois que le programme azureus n'est qu'un petit fichier bash qui lance le jar. Donc je te conseille de garder cette méthode là.
5/ pour la méthode du .jar qui contient tout: je pense que dans le ficher Manifest (de mémoire je crois que c'est ça) du .jar tu peux spécifier des liens internes au .jar. Donc en gros la grosse ligne d'eclipse est intégré au jar et du coup, le jar se lance avec une petite commande.
Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam
Hors ligne
#5 Le 08/09/2008, à 21:12
- Lord Kluivert
Re : [ résolu ] Comment optimisé et transformé un .jar en .deb ?
Salut obiwankennedy, merci pour tes remarques (oui j'avoue je pense encore en mode Windows ).
En fait dans ma recherche d'optimisation du .jar sur le net, j'ai vu que l'on pouvait fusionner le .jar principal avec les .jar externes, se que j'ai fait, mais je ne savais pas que c'était en contradiction avec l'esprit Ubuntu.
Donc je pense que je vais laisser le projet tel quel, et me concentré sur le .deb.
Est-ce que quelqu'un pourrait me donner un tuto personnalisé pour la crétion du .deb de mon projet ?
Hors ligne
#6 Le 10/09/2008, à 07:59
- Lord Kluivert
Re : [ résolu ] Comment optimisé et transformé un .jar en .deb ?
Alors les amis, personne ne peux me fournir cette information ?
J'aimerai avoir un tuto qui m'explique comment je crée un .deb avec mon projet, en sachant que :
- l'application est uniquement disponible pour le compte utilisateur qui l'installe
- le paquet dépendera d'un des paquets qui fournit une machine virtuelle : java 1.6 ou supérieur (pour le futur)
- un lien dans le menu gnome Applicaions > Accessoires sera également créer à l'instalation, qui lancera mon fichier : "lanceur"
- et enfin, le but du .deb, l'application pourra être désintaller sans laisser de trace par synaptic
Hors ligne
#7 Le 10/09/2008, à 14:08
- meushi
Re : [ résolu ] Comment optimisé et transformé un .jar en .deb ?
toi t'as pas lu le premier lien que je t'ai donné
le revoilà:
http://www.sukria.net/fr/libreast/#1
il suffit pas ?
Dernière modification par meushi (Le 10/09/2008, à 14:36)
Hors ligne
#8 Le 10/09/2008, à 17:28
- Lord Kluivert
Re : [ résolu ] Comment optimisé et transformé un .jar en .deb ?
Salut, meushi.
Je vais essayer ton tuto même ci à première vu je n'y comprend pas grand chose .
Je mais le sujet en résolu, puisque tu dis que ce tuto suffit.
Merci de votre aide
Hors ligne