web-dev-qa-db-fra.com

Comment convertir mon programme Java en un fichier .exe?

Si j'ai un fichier source Java (* .Java) ou un fichier de classe (* .class), comment puis-je le convertir en fichier .exe?

J'ai aussi besoin d'un installateur pour mon programme.

484
Waseem

javapackager

L'outil de packaging Java compile, empaquete et prépare les applications Java et JavaFX en vue de leur distribution. La commande javapackager est la version en ligne de commande.

- la documentation d'Oracle

L'utilitaire javapackager est fourni avec le JDK. Il peut générer des fichiers .exe avec le drapeau -native exe, entre autres.

WinRun4J

WinRun4j est un lanceur Java pour Windows. C'est une alternative à javaw.exe et offre les avantages suivants:

  • Utilise un fichier INI pour spécifier le chemin de classe, la classe principale, les arguments de vm, les arguments de programme.
  • Nom de l'exécutable personnalisé qui apparaît dans le gestionnaire de tâches.
  • JVM supplémentaire plaide pour une utilisation plus flexible de la mémoire.
  • Remplacement d'icône intégré pour une icône personnalisée.
  • [d'autres points de balle suivent]

- la page web de WinRun4J

WinRun4J est un utilitaire open source. Il possède de nombreuses fonctionnalités.

packr

Programmez votre JAR, vos actifs et une JVM pour la distribution sur Windows, Linux et Mac OS X, en ajoutant un fichier exécutable natif pour le faire apparaître comme une application native. Packr est le plus approprié pour les applications graphiques.

- packr README

packr est un autre outil open source.

JSmooth

JSmooth est un wrapper Java exécutable. Il crée des lanceurs Windows natifs (.exe standard) pour vos applications Java. Le déploiement de Java est beaucoup plus simple et convivial, car il est capable de trouver tout Java VM installé par lui-même.

- Le site de JSmooth

JSmooth est open source et possède des fonctionnalités, mais il est très ancien. La dernière version date de 2007.

JexePack

JexePack est un outil de ligne de commande (idéal pour les scripts automatisés) qui vous permet de conditionner votre application Java (fichiers de classe), éventuellement avec ses ressources (telles que GIF/JPG/TXT/etc), dans un seul fichier EXE Windows compressé 32 bits, exécuté à l’aide du logiciel Java de Sun Environnement d'exécution. La console et les applications fenêtrées sont supportées.

- Le site de JexePack

JexePack est une version d'évaluation. Le paiement est requis pour une utilisation en production, et les fichiers exe créés avec cet outil affichent des "rappels" sans paiement. En outre, la dernière version date de 2013.

InstallAnywhere

InstallAnywhere permet aux développeurs de créer facilement un logiciel d'installation professionnel pour toutes les plateformes. Avec InstallAnywhere, vous vous adapterez rapidement aux changements du secteur, accéderez plus rapidement au marché et vous offrirez une expérience client attrayante. Et connaissez la vulnérabilité des composants OSS de votre projet avant d’expédier.

- Site web de InstallAnywhere

InstallAnywhere est un package commercial/d'entreprise qui génère des programmes d'installation pour les programmes basés sur Java. Il est probablement capable de créer des fichiers .exe.

Fichiers JAR exécutables

En guise d'alternative aux fichiers .exe, vous pouvez créer un fichier JAR qui s'exécute automatiquement lorsque vous double-cliquez dessus, en ajoutant un point d'entrée au manifeste JAR .


Pour plus d'informations

Une excellente source d’information sur ce sujet est l’article d’Excelsior " Convertir Java en EXE - Pourquoi, quand, quand et comment ".

Voir aussi l'article d'accompagnement " Meilleurs outils de conversion de JAR à EXE, gratuit et commercial ".

315
Jay

Launch4j

Launch4j est un outil multiplateforme qui permet d'encapsuler Java applications distribuées sous forme de fichiers jar dans des exécutables natifs Windows légers. L'exécutable peut être configuré pour rechercher une certaine version de JRE ou utiliser une version fournie. Il est également possible de définir des options d'exécution, telles que la taille initiale/maximale du segment de mémoire. Le wrapper offre également une meilleure expérience utilisateur grâce à une icône d'application, à un écran de démarrage pré-JRE natif, à un nom de processus personnalisé et à une page de téléchargement Java au cas où le JRE approprié ne pourrait pas être trouvé.

- Le site de Launch4j

109
the.duckman

UPDATE: GCJ est mort. Il était officiellement supprimé du projet GCC en 2016. Même avant cela, il avait été pratiquement abandonné pendant sept ans et, en tout cas, il n'était jamais suffisamment complet pour servir d'implémentation alternative viable Java.

Allez trouver un autre compilateur Java AOT.

GCJ: Le GNU compilateur pour Java == peut compiler le code source Java en code machine natif, y compris les exécutables Windows.

Bien que tout ce qui est contenu dans Java ne soit pas pris en charge par GCJ, en particulier par les composants de l'interface graphique (voir Quelles sont les API Java gérées? À quel point le support est-il complet? question de FAQ ). Je n'ai pas beaucoup utilisé GCJ, mais d'après les tests limités que j'ai effectués avec les applications de console, cela semble aller.

L'un des inconvénients de l'utilisation de GCJ pour créer un fichier exécutable autonome est que la taille du fichier EXE résultant peut être assez grande. Une fois, j'ai compilé une application console triviale dans GCJ et le résultat était un exécutable d'environ 1 Mo. (Il existe peut-être des solutions à ce problème que je ne connais pas. Une autre option serait les programmes de compression exécutables.)

En ce qui concerne les installateurs open-source, le Nullsoft Scriptable Install System est un programme d’installation scriptable. Si vous êtes curieux, il existe exemples fournis par les utilisateurs sur la manière de détecter la présence d’un JRE et de l’installer automatiquement si le JRE requis n’est pas installé. (Juste pour vous dire que je n’avais jamais utilisé NSIS auparavant.)

Pour plus d'informations sur l'utilisation de NSIS pour l'installation d'applications Java, reportez-vous à ma réponse pour la question " Quel est le meilleur moyen distribuer Java applications? "

34
coobird

Vous pouvez créer un fichier de commandes avec le code suivant:

start javaw -jar JarFile.jar

et convertissez le fichier .bat en fichier .exe à l'aide de n'importe quel convertisseur .bat en fichier .exe.

23
user2675678

Nous utilisons Install4J pour construire des installateurs pour les environnements Windows ou Unix.

Il est facilement personnalisable jusqu'au point où vous souhaitez écrire des scripts pour des actions spéciales impossibles à effectuer avec des dialogues standard. Mais même si nous configurons des services Windows avec ce dernier, nous n’utilisons que des composants standard.

  • installateur + lanceur
  • windows ou unix
  • scriptable en Java
  • fourmi
  • beaucoup de panneaux standard personnalisables et d'actions
  • inclut ou télécharge éventuellement un JRE
  • peut également lancer des services Windows
  • plusieurs langues

Je pense que Launch4J est de la même société (juste le lanceur - pas d’installateur).

PS: Malheureusement, je ne suis pas payé pour cet endossement. J'aime juste cet outil.

16
Stroboskop

La dernière version de Java Web Start a été améliorée pour permettre un bon fonctionnement hors connexion ainsi que pour permettre une "installation locale". Cela vaut la peine de regarder.

EDIT 2018: Java Web Start n'est plus fourni avec les derniers JDK. Oracle préconise plutôt le modèle "déployez localement votre application avec un JRE inclus".

IMHO JSmooth semble faire un très bon travail.

9
jussij

Si vous devez convertir l’ensemble de votre application en code natif, c’est-à-dire un fichier EXE plus des DLL, il existe ExcelsiorJET . J'ai trouvé que cela fonctionnait bien et fournissait une alternative à l'intégration d'un JRE.

9
mdma

Je dirais que launch4j est le meilleur outil pour convertir un code source Java (.Java) en fichier .exe. Vous pouvez même regrouper un jre avec celui-ci pour le distribuer et l'exe peut même être iconifié. Bien que la taille de l'application augmente, cela garantit que l'application fonctionnera parfaitement même si l'utilisateur ne dispose pas d'un jre. Il vous assure également que vous êtes en mesure de fournir le jre spécifique requis pour votre application sans que l'utilisateur ait à l'installer séparément. Mais malheureusement, Java perd de son importance. Son support multi-plateforme est totalement ignoré et l'application finale n'est prise en charge que par Windows. Mais ce n'est pas grave, si vous ne vous adressez qu'aux utilisateurs de Windows.

6
Pratanu Mandal

Vous pouvez utiliser Janel . Ce dernier fonctionne en tant que lanceur d’applications ou de services (disponible à partir de la version 4.x).

5
L. BIZE

Vous pouvez également utiliser un traducteur Java-c (par exemple, JCGO ) et compiler les fichiers C générés dans un fichier binaire natif (.exe) pour la plate-forme cible.

4
Ivan Maidanski

On peut me pardonner d’être contre la conversion d’un programme Java en une application .exe et j’ai mes raisons. le principal étant qu'un programme Java puisse être compilé dans un fichier jar à partir de nombreux IDE. Lorsque le programme est au format .jar, il peut s'exécuter sur plusieurs plates-formes, contrairement à .exe, qui s'exécute uniquement dans un environnement très limité. Je suis pour l'idée que Java Les programmes ne devraient pas être convertis au format Exe à moins que ce ne soit très nécessaire. On peut toujours écrire des fichiers .bat qui exécutent le programme Java alors qu’il s’agit d’un fichier jar.

s'il est vraiment nécessaire de le convertir en exe, Jar2Exe converter le fait en silence et vous pouvez également attacher des bibliothèques compilées avec l'application principale.

3

Vous pouvez convertir jar en exe en utilisant jar2exe . Cependant, vous devez acheter le logiciel. Si vous avez besoin d'un logiciel open source, je vous conseillerais JSmooth .

2
Raghunandan