web-dev-qa-db-fra.com

Compiler un programme Java en un exécutable

Duplicate possible:
Comment créer un fichier .exe pour un programme Java?

Je viens de créer un programme simple avec Eclipse et je souhaite le compiler dans un exécutable, mais je n'arrive tout simplement pas à trouver comment le faire. S'il vous plaît aider.

111
Meir

Vous pouvez convertir le fichier .jar en .exe de ces manières:
alt text
(source: viralpatel.net )

1- wrapper JSmooth .exe:
JSmooth est un wrapper Java exécutable. Il crée des lanceurs Windows natifs (.exe standard) pour vos applications Java. Cela rend le déploiement de Java beaucoup plus fluide et convivial, car il est capable de trouver tout Java VM installé par lui-même. En l'absence de VM, l'encapsuleur peut télécharger et installer automatiquement une machine virtuelle Java 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 ayant son propre comportement: choisissez votre goût!

Télécharger: http://jsmooth.sourceforge.net/

2- JarToExe 1.8
Jar2Exe est un outil permettant de convertir des 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", "Interface graphique Windows", "Service Windows".
  • 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 chiffrer 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 prennent en charge le journal des événements du système d’enregistrement.
  • Les fichiers exe du service Windows générés peuvent s'installer/se désinstaller eux-mêmes et le service d'assistance mettre en pause/continuer.
  • 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 pris en charge. (18 mai 2008)

Téléchargement: http://www.brothersoft.com/jartoexe-75019.html

3- Exécuteur
Créez un package dans votre application Java sous la forme d'un fichier jar. Executor transforme le fichier jar en un fichier exe Windows, indiscernable d'une application native. Double-cliquez simplement sur le fichier exe pour appeler l'environnement d'exécution Java et lancer votre application.

Télécharger: http://mpowers.net/executor/

EDIT: Le lien ci-dessus est cassé, mais voici la page (avec téléchargement en cours de travail) des archives Internet. 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. Cela prend également en charge Windows Vista et permet également de créer des packages MSI dans d'autres langues.
Download: http://www.advancedinstaller.com/ Informez-moi des autres outils que vous avez utilisés pour convertir le fichier JAR en fichier EXE.

132
Sajad Bahmani

J'utiliserais GCJ (compilateur GNU pour Java) dans votre cas. C'est un compilateur AOT (en avance) pour Java, un peu comme GCC est pour C. Au lieu d'interpréter le code, ou de générer du code intermédiaire Java à exécuter ultérieurement par le Java. _ VM, il génère du code machine.

GCJ est disponible sur presque tous les systèmes Linux via son gestionnaire de paquets respectif (si disponible). Après l'installation, le compilateur GCJ doit être ajouté au chemin afin qu'il puisse être appelé via le terminal. Si vous utilisez Windows, vous pouvez télécharger et installer GCJ via Cygwin ou MinGW.

Cependant, je vous recommande fortement de réécrire votre source pour un autre langage censé être compilé, tel que C++. Java est censé être un langage interprété portable. Le compiler en code machine va totalement à l'encontre de l'objectif du langage.

31
jakogut

J'utilise launch4j

ANT Command:

<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>
18
r3zn1k

J'utilise habituellement un script chauve-souris 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 dans lequel se trouve le .bat. Cela permet à la chauve-souris de trouver les emplacements des bocaux sans requérir de variables d’environnement spéciales ni le réglage de la variable PATH.

EDIT: Ajout de citations au classpath. Sinon, comme dit Joey, "des choses amusantes peuvent se produire avec des espaces"

3
Itay Maman

Nous avons trouvé que Jsmooth fonctionnait bien et était facilement scriptable avec ant sous Linux. Vous voudrez peut-être utiliser one-jar (également facilement scriptable avec ant sous Linux) pour collecter d’abord une application multi-fichiers dans un seul jar.

Nous avions avant tout besoin du déploiement facile du fichier EXE associé à la fonctionnalité "hé, il vous faut Java version X, allez ici pour télécharger".

(mais ce dont vous avez probablement besoin, c’est de la fonction "jar exécutable"/"jar exécutable" en Java standard).

Ce que vous pouvez faire est de créer un fichier .bat qui exécutera le fichier .jar créé, en vérifiant si un JRE est présent.

De Mitch lien utile ( source )

Java -classpath myprogram.jar de.vogella.Eclipse.ide.first.MyFirstClass

Cela peut être utilisé dans votre lot ...

1
Vincent B.

Il y a une petite poignée de programmes qui font cela ... TowerJ en est un qui me vient à l'esprit (je vous laisse Google), mais cela coûte beaucoup d'argent.

La référence la plus utile pour ce sujet que j'ai trouvé est la suivante: http://mindprod.com/jgloss/nativecompiler.html

il mentionne quelques autres produits et des alternatives pour atteindre le même objectif.

0
Carl Smotricz