Comment puis-je regrouper un JRE dans un EXE pour une Application Java? Launch4j dit "runtime est manquant ou corrompu."

je suis nouveau à la programmation en Java mais je suis généralement familier avec la façon dont tout fonctionne. Je voudrais pouvoir mettre à la fois un fichier jar et un jre dans un exécutable windows(exe) de sorte que lorsque je le distribue, le client n'a pas besoin d'avoir un JRE installé. Quel programme dois-je utiliser?

j'ai launch4j et il semble faire exactement ce que je veux, mais quand j'essaie d'exécuter l'application, je reçois "cette application a été configuré pour utiliser un environnement Java Runtime empaqueté mais le runtime est manquant ou endommagé."

je veux que mon application soit juste un exe exécutable, pas un installateur. Au minimum, quelqu'un peut-il me montrer comment emballer correctement un JRE avec launch4j?

22
demandé sur MagicGuy52 2012-12-22 00:07:22

6 réponses

la seule façon de regrouper un JRE était d'utiliser Launch4J et Inno Setup Compiler .

tout d'abord, créez un dossier jre6 (par exemple) dans le même répertoire que votre fichier de sortie (.EXE.)

copiez ensuite la JRE de votre système dans votre dossier jre6 .

puis vous ouvrez Launch4J et mettez le chemin JRE groupé - tapez juste jre6 . Ensuite, cliquez sur le bouton Construire (évidemment, après avoir entré tous les autres paramètres - mais la seule valeur que vous devez entrer sur le JRE onglet lui-même est le Packled JRE path valeur.)

Je m'attendais à ce que cela fonctionne, mais si vous déplacez alors le .exe à un nouvel emplacement (de sorte qu'il n'est plus co-situé avec votre jre6 dossier) vous obtenez le cette application a été configuré pour utiliser un environnement D'exécution Java, mais l'erreur est manquante ou corrompue lorsque vous essayez d'exécuter l'application...

j'ai joué avec cela toute la journée et il n'y avait aucun moyen que je pouvais obtenir Launch4J pour inclure la JRE dans le .EXE. Vraiment mauvais à mon avis, que leur documentation ne semble pas allusion à cette question.

Donc ce que j'ai fait pour résoudre était d'utiliser Inno Setup Compiler (ISC) . Cette application est utilisée pour envelopper votre .exe comme un fichier D'installation Windows. J'ai donc ajouté un paramètre au script ISC qui copie JRE dans le paquet d'installation. La ligne que j'ai ajoutée au script (dans la section [Files] ) était:

Source: "M:\Netbeans\MyApp\jre6\*"; DestDir: "{app}\jre6\"; Flags: recursesubdirs createallsubdirs

...un petit contournement, mais ça a fait l'affaire.

Répétez toutes les étapes ci-dessus, et vous devriez être triés.

30
répondu ban-geoengineering 2018-09-29 21:33:58

Je n'ai jamais utilisé le produit Launch4J, bonne chance pour le configurer correctement.

on dirait que vous pourriez être en mesure d'aller au Forum de Discussion sur Sourceforge pour d'autres conseils ici

Autres Suggestions:

la plupart des produits que J'ai vu à partir D'IBM (Websphere) et Oracle juste extraire un JRE sous le répertoire d'installation et configurer la commande de démarrage par lot pour utiliser le JRE. En gros, le fichier JRE et votre fichier jar seraient installés en une seule fois.

l'exe d'installation vérifie habituellement si elle est déjà installée et saute cette étape si elle la trouve déjà là. Ceci est utile pour les mises à jour du seul fichier jar.

ayant l'installation locale résout également le problème du client installant son propre JRE qui peut être incompatible ou contenir des bogues. De cette façon, vous traitez avec une version JRE connue.

la route excelsior est OK si vous n'avez pas de composant graphique pour votre application (Cela fait longtemps, cette restriction peut avoir changé). Il y a aussi d'autres restrictions, mais vous feriez probablement mieux de simplement distribuer un JRE avec votre code dans un seul programme d'installation exécutable.

1
répondu Mike 2012-12-21 21:32:30

il semble que vous ayez besoin d'un compilateur de code natif. Ces compilateurs produisent du code natif qui ne nécessite pas de JRE.

voir cet article - https://www.excelsior-usa.com/articles/java-to-exe.html#aot .

1
répondu tcb 2017-12-12 09:34:18

c'est facile de grouper jre dans launch4j..

copiez simplement le jre dans le même dossier de sortie

dans la zone de texte bundle jre environment, il suffit de donner le dossier jre lui-même

dans la zone de texte variable d'environnement (présente dans la même page ci-dessous), donner jusqu'à bin

puis créer exe.. Il fonctionne comme prévu sans jre dans la machine.

Merci

0
répondu Nivedha 2018-02-05 11:47:39

ce que vous demandez ne sera pas facile à faire (si c'est faisable du tout.) Si j'étais vous, je chercherais à créer un fichier JAR exécutable:

java eclipse créer un exécutable jar

une autre option serait D'utiliser Java Web Start. Cela supposait que vous utilisiez un navigateur moderne. le JNLP demandera automatiquement à l'utilisateur d'installer la version correcte de Java.

http://docs.oracle.com/javase/tutorial/deployment/webstart/index.html

-2
répondu Matt Klooster 2017-05-23 11:54:15

il y a plusieurs raisons pour lesquelles launch4j ne fonctionnera pas en douceur. une partie de la raison est:

1) l'utilisateur n'exécute pas L'application en tant qu'administrateur

2) L'utilisateur ne configure pas l'image de l'icône correctement. doit strictement .ico

-4
répondu Ridzuan Adris 2014-05-15 02:46:25