Intégrer un JRE dans un exécutable Windows?

Suppose que je veux distribuer une application Java.

supposons que je veuille le distribuer comme un seul exécutable. Je pourrais facilement construire un .jar avec à la fois l'application et toutes ses dépendances externes dans un seul fichier (avec quelques Ant le piratage).

supposons Maintenant que je veux le distribuer comme une .fichier exe sous Windows. C'est assez facile, étant donné les bons outils là-bas (comme Launch4j et les goûts).

mais supposons maintenant que je ne veux pas non plus dépendre de l'utilisateur final ayant le bon JRE (ou N'importe quel JRE du tout pour cette matière) installé. Je veux distribuer un JRE avec mon application, et mon application devrait fonctionner sur ce JRE. Il est assez facile de créer un exécutable d'installateur de Windows, et d'intégrer un dossier avec tous les fichiers JRE nécessaires. Mais ensuite je distribue un installateur et pas une seule application.

Est-il possible d'intégrer à la fois la demande", 151970920" et un JRE, dans une .fichier exe agissant en tant que lanceur d'application (et non en tant qu'installateur)?

54
demandé sur Jonik 2010-02-13 23:28:59

11 réponses

Essayez d'utiliser Aviaire et ProGuard boîtes à outils. Avian permet d'intégrer une machine virtuelle légère dans votre application. Linux, MacOS, Windows et iOS sont pris en charge. Et ProGuard vous permet de rétrécir le gros fichier jar pour se préparer à l'embed.

22
répondu i_home 2016-08-22 15:30:29

il y a un nouvel outil qui fait ceci: Packr

https://github.com/libgdx/packr

9
répondu Andrejs 2014-07-21 09:43:22

pas mal d'options autour, commercialement c'est très bon:

http://www.excelsior-usa.com/jet.html

Il ya deux options open source clés GCJ et VMKit

http://gcc.gnu.org/java / et http://vmkit.llvm.org /

D'autres trajets plus prolongés comprendraient: IKVM.NET:

http://www.ikvm.net /

qui est une JVM. net qui peut être compilée statiquement dans un EXE

7
répondu metismo 2010-02-13 20:31:14

Est-il possible d'intégrer à la fois l'application et un JRE, dans une .fichier exe agissant en tant que lanceur d'application (et non en tant qu'installateur)?

si un outil commercial est ok pour vous, install4j résout ce problème très facilement (voir sa " Features "page ). Il peut générer à la fois lanceurs d'applications et installateurs.

Je n'aimerais pas me répéter trop, alors cochez par exemple cette réponse plus tôt où je l'ai branché (comme installateur, mais cela ne fait pas beaucoup de différence ici).

résumé / conclusion: install4j peut créer native .les lanceurs exe qui font absolument et non dépendent d'un JRE pré-installé (ou de tout autre libs spécifique), et il offre des options flexibles pour le bundling (et la détection) JREs.

4
répondu Jonik 2017-05-23 12:34:53

Netbeans permet à un projet Java SE d'être empaqueté dans un installateur d'application natif, incorporant un JRE. C'est ici: https://netbeans.org/kb/docs/java/native_pkg.html :)

3
répondu TianaR 2014-11-23 17:22:58

je sais que je suis un peu en retard à cette fête, mais il semble que ej-technologies (aimer leurs affaires) a une nouvelle solution appelée exe4j qui fera exactement comme L'OP voulu sans aucune affaire Drôle nécessaire.

http://www.ej-technologies.com/products/exe4j/overview.html

si vous travaillez dans un projet OpenSource, ils fournissent des licences gratuites (vous avez juste besoin de les contacter). Si c'est un commercial un projet, une licence est nécessaire... mais à 69 $ pour une licence, c'est pas cher et ça vaut le coup.

de leur site web:

If you want your own process name instead of java.exe in the task manager
and a user friendly task-bar grouping, exe4j does the job for you.

exe4j helps you with starting your Java applications in a safe way, displaying
native splash screens, detecting or distributing suitable JREs and JDKs,
startup error handling and much more.
1
répondu SnakeDoc 2013-08-08 15:21:39

JSmooth peut le faire selon la documentation. Je l'ai seulement essayé sans JRE intégré, mais j'ai été très satisfait. Il est scriptable avec ant et nous construisons sur Linux.

http://jsmooth.sourceforge.net/features.php

0
répondu Thorbjørn Ravn Andersen 2010-02-13 20:35:44

vous pourriez jeter un oeil à: http://ulibgcj.sourceforge.net/uswt.html Il a la bibliothèque de micro-swt qui rendent facile de construire GUI en utilisant SWT et jetez un oeil à Eclipse GCJ Builder

0
répondu Kachwahed 2011-11-24 11:50:14

Install4j est un excellent outil pour ce kink de but.Aussi, vous pouvez vérifier JSmooth ou launch4j-tout bien que j'ai essayé de regrouper jre avec JSmooth et n'a pas pu..

0
répondu 2012-06-08 15:44:27

J'ai trouvé le projecteur Engima x86 / x64 mieux que BoxedApp Packer

si vous obtenez miminizejre doux par packr que la copie de votre application myapp.jar dans le launcher\jre\bin\

et copie à partir de l'exemple jre installé C:\Program Files\Files \ Java \ 1.8.0_xxx\bin\javaw.exe pour launcher\jre\bin\

entrée Engima Protector ouverte - > javaw.exe depuis le launcher\jre\bin\

et aller Options si vous voulez haute compresse et Trouver Divers -> ligne de Commande "-jar myapp.jar"

et cliquez sur Protéger et attendre les DLL et bocaux entiers dans exe

assurez-vous de votre myapp.jar devrait être généré par Eclipse avec "Package required libraries into generated JAR" parce que vous ne vous inquiétez pas si vous avez importé de nombreuses bibliothèques par exemple lwjgl ou JavaFX que vous devez vérifier si javaw_protected intégré.exe a inclus des fichiers importants exemple de biens.

Mais BoxedApp Packer est même trop BoxedApp Packer est un peu plus grand que Engima Protecteur. Protector est presque le meilleur petit intégration javaw dans.exe avec des actifs / ressources. Ils ne peuvent pas déchiffrer les fichiers jar... J'espère que vous êtes heureux avec propre jar dans exe comme moins de 4 Mo sans lib directory - si vous avez des problèmes avec jvm.message d'erreur cfg cela signifie que vous ne copiez pas l'exe intégré dans le répertoire racine de jre ou jdk

veuillez vous assurer que embedded exe est ici en dehors du répertoire racine jre ou jdk.

j'espère que vous n'avez pas de problème si vous utilisez le Protecteur x86 qu'il a besoin d'utiliser i586, le Protecteur x64 pour jre x64

si vous utilisez le Protecteur x64 avec jre x86/i386 - il n'y a pas de problème. Il fonctionne très bien.

meilleures salutations

/ / EDIT:

UPDATED NEW VERSION EXCELSIOR JET + VIRTUAL BOX OR PROTECTOR are almost best "embedded applications"

vérifier youtube: https://www.youtube.com/watch?v=ctbIxq-1MGE

0
répondu SourceSkyBoxer 2016-11-07 17:48:24