Duplicata possible :
Comment créer un fichier .exe pour un programme Java ?
Je viens de créer un programme simple avec Eclipse et je veux le compiler en un exécutable, mais je n'arrive pas à trouver comment le faire.
Duplicata possible :
Comment créer un fichier .exe pour un programme Java ?
Je viens de créer un programme simple avec Eclipse et je veux le compiler en un exécutable, mais je n'arrive pas à trouver comment le faire.
Vous pouvez convertir le fichier .jar en .exe de ces façons :
(source : <a href="https://img.viralpatel.net/java-jar-file-to-exe-executable.png" rel="noreferrer">viralpatel.net </a>)
1- JSmooth .exe wrapper :
JSmooth est un Java Executable Wrapper. Il crée des lanceurs Windows natifs (standard .exe) pour vos applications Java. Il rend le déploiement de Java beaucoup plus facile et convivial, car il est capable de trouver tout seul une VM Java installée. Si aucune VM n'est disponible, le wrapper peut automatiquement télécharger et installer une JVM appropriée, ou simplement afficher un message ou rediriger l'utilisateur vers un site web.
JSmooth fournit une variété de wrappers pour votre application java, chacun d'entre eux ayant son propre comportement : Choisissez votre goût !
Télécharger : http://jsmooth.sourceforge.net/
2- JarToExe 1.8
Jar2Exe est un outil pour convertir les fichiers jar en fichiers exe. Voici les principales caractéristiques décrites sur leur site web :
Télécharger : http://www.brothersoft.com/jartoexe-75019.html
3- Exécuteur testamentaire
Empaquetez votre application Java sous forme de jar, et Executor transformera le jar en un fichier Windows exe, indiscernable d'une application native. Il suffit de double-cliquer sur le fichier exe pour invoquer le Java Runtime Environment et lancer votre application.
Télécharger : http://mpowers.net/executor/
EDIT : Le lien ci-dessus est cassé, mais voici la page (avec un téléchargement fonctionnel) de l'Internet Archive. http://web.archive.org/web/20090316092154/http://mpowers.net/executor/
4- Installateur avancé
Advanced Installer vous permet de créer des installations Windows MSI en quelques minutes. Il prend également en charge Windows Vista et permet de créer des paquets MSI dans d'autres langues.
Télécharger : http://www.advancedinstaller.com/ Faites-moi part des autres outils que vous avez utilisés pour convertir JAR en EXE.
JWrapper vous permet de convertir java vers un exe ou autre application native sur les principales plateformes (Windows, Linux, Mac) gratuitement. Il fonctionne sur n'importe quel système d'exploitation, prend en charge la signature de code et la mise à jour automatique intégrées, et peut éventuellement regrouper le JRE dans un très petit paquet (fortement compressé).
Dans votre cas, j'utiliserais GCJ (GNU Compiler for Java). C'est un compilateur AOT (ahead of time) pour Java, un peu comme GCC l'est pour le C. Au lieu d'interpréter le code, ou de générer du code Java intermédiaire qui sera exécuté ultérieurement par la VM Java, il génère du code machine.
GCJ est disponible sur presque tous les systèmes Linux par le biais de son gestionnaire de paquets respectif (si disponible). Après l'installation, le compilateur GCJ doit être ajouté au chemin d'accès afin qu'il puisse être invoqué dans le terminal. Si vous utilisez Windows, vous pouvez télécharger et installer GCJ via Cygwin ou MinGW.
Je vous recommande toutefois vivement de réécrire vos sources pour un autre langage destiné à être compilé, comme le C++. Java est conçu pour être un langage interprété et portable. Le compiler en code machine est complètement contraire à ce pour quoi le langage a été développé.
+1 pour être le seul commentaire qui répond (correctement) à l'affirmative. Je ne sais pas si GCJ supporte tout ce que le combo conventionnel classfile/jvm fait, mais ça vaut vraiment le coup d'essayer pour un "programme simple".
@Mark - ils ne nécessitent pas une JVM séparée, mais les bibliothèques libgcj sont effectivement une JVM.
J'utilise lancer4j
Commande ANT :
<target name="jar" depends="compile, buildDLLs, copy">
<jar basedir="${java.bin.dir}" destfile="${build.dir}/Project.jar" manifest="META-INF/MANIFEST.MF" />
</target>
<target name="exe" depends="jar">
<exec executable="cmd" dir="${launch4j.home}">
<arg line="/c launch4jc.exe ${basedir}/${launch4j.dir}/L4J_ProjectConfig.xml" />
</exec>
</target>
Launch4j exécute la JVM comme un processus séparé, et apparaît donc dans le gestionnaire de tâches sous la forme suivante javaw
.
J'utilise généralement un bat script pour cela. Voici ce que j'utilise généralement :
@echo off
set d=%~dp0
java -Xmx400m -cp "%d%myapp.jar;%d%libs/mylib.jar" my.main.Class %*
Le %~dp0 extrait le répertoire où se trouve le .bat. Cela permet à la bat de trouver l'emplacement des jars sans nécessiter de variables d'environnement spéciales ni la définition de la variable PATH.
EDIT : Ajout de guillemets dans le classpath. Sinon, comme Joey l'a dit, "des choses amusantes peuvent se produire avec des espaces".
Nous avons trouvé que Jsmooth fonctionne bien et est facilement scriptable avec ant sous Linux. Vous voudrez peut-être utiliser one-jar (également facilement scriptable avec ant sous Linux) pour rassembler une application multi-fichiers dans un seul jar d'abord.
Nous avions surtout besoin de la facilité de déploiement de l'EXE combinée aux facilités du type "hé, vous avez besoin de Java version X, allez ici pour le télécharger".
(mais ce dont vous avez le plus souvent besoin est la fonction "Runnable jar" / "Executable jar" de Java standard).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
11 votes
Il doit s'agir d'un doublon :)
1 votes
Très bien : stackoverflow.com/questions/516399/create-exe-for-java-program stackoverflow.com/questions/309329/ stackoverflow.com/questions/147181/ stackoverflow.com/questions/743029/
1 votes
Egalement dupe de stackoverflow.com/questions/1973431/ et stackoverflow.com/questions/2305762/ et stackoverflow.com/questions/2855937/