125 votes

Compilation d'un programme java en un exécutable

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.

140voto

SjB Points 6823

Vous pouvez convertir le fichier .jar en .exe de ces façons :
alt text
(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 :

  • Peut générer trois types de fichiers exe : "Console", "Windows GUI", "Windows Service".
  • Les fichiers exe générés peuvent ajouter des icônes de programme et des informations sur la version.
  • Les fichiers exe générés peuvent crypter et protéger les programmes java, aucun fichier temporaire ne sera généré lors de l'exécution du programme.
  • Les fichiers exe générés prennent en charge les icônes de la barre d'état système.
  • Les fichiers exe générés permettent d'enregistrer le journal des événements du système.
  • Les fichiers exe de service Windows générés sont capables de s'installer/désinstaller, et de supporter la pause/continuation du service.
  • Nouvelle version de la version x64, peut créer des cadres 64 bits. (18 mai 2008)
  • Le mode assistant et le mode ligne de commande sont tous deux pris en charge. (18 mai 2008)

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.

9 votes

1. dernière mise à jour : 2007 3. lien invalide 4. lien invalide

1 votes

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é).

1 votes

JarToExe est un essai de 30 jours...

37voto

GenTiradentes Points 1005

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 votes

+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".

0 votes

@SjB GCJ compile en effet des exécutables natifs qui ne nécessitent pas de JVM.

4 votes

@Mark - ils ne nécessitent pas une JVM séparée, mais les bibliothèques libgcj sont effectivement une JVM.

18voto

r3zn1k Points 973

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>

1 votes

J'aime bien celui-ci car il fonctionne également sur d'autres plateformes.

0 votes

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 .

2 votes

Cette réponse serait beaucoup Ce serait mieux si vous aviez inclus le contenu de L4J_ProjectConfig.xml

5voto

Itay Maman Points 15470

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".

5 votes

Vous devriez vraiment citer votre classpath. Sinon, des choses amusantes se produisent avec les espaces.

1 votes

Ce n'est pas une réponse à la question.

1 votes

Conseil : mettez tous les pots dans le même répertoire, puis utilisez un joker classpath.

1voto

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.com

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.

Powered by:

X