J'utilise La sortie de Ce que j'ai: p> J'ai un projet simple créé à partir d'archétype Maven Je fais: p> et tous les fichiers (et dossiers) (JRE (~ 53 Mo), JAR (~ 9 Mo), classes ...) dans Après avoir supprimé ces fichiers i Exécutez la suppression réduit la taille de l'application code> de 118 à 56 Mo. em> p> une question supplémentaire forte >:: J'utilise Windows et jPackage code> (avec JDK 14) pour créer une application JavaFX autonome.
jPackage code> semble étrange, il se compose de deux mêmes copies de JRE et de tous les fichiers du dossier code> app code>, sauf
app.cfg code > Fichier, peut être supprimé sans aucun problème. P>
jPackage code> ne peut pas générer de fichiers inutiles? strong> p>
org.openjfx: Javafx-archétype-simple: 0.0.3 code>.
Et je viens d'ajouter
Maven-Shade-plugin Code> pour créer un pot avec des dépendances et une simple classe de lancement pour celui-ci (comme
NewMain code> Classe ICI ). P>
mvn package
mvn javafx:jlink
jpackage --package-type app-image --dest targetApp --name App --runtime-image target/image --main-jar testApp-1.0-SNAPSHOT.jar --input target
Targetapp \ app \ runtime code> li>
Targetapp \ app \ app \ image code> li>
ul>
Targetapp \ app \ app code> peut être en toute sécurité Supprimé, sauf
app.cfg code> fichier. p>
TearApp \ app \ app.exe code> et ça marche bien. P >
jpackage code> génère le résultat pour Windows (beaucoup de fichiers code> dll code> et
exe code>), est-ce que je peux créer une application autonome sous Windows pour Mac et Linux? P> P>
3 Réponses :
Vous obtenez ce résultat car vous avez déjà créé un Uber-Jar qui contient tout en plus de ce que vous avez spécifié via - cible d'entrée code> qui, selon la documentation, a l'effet suivant.
All files in the input directory will be packaged into the
application image.
Oui, c'est la raison. Mais - entrée code> est une option requise. Eh bien, j'ai spécifié
sortiedirectory code> pour
maven-shade-plugin code> et
maven-jar-plugin code> donc j'ai le répertoire contenant uniquement un fichier JAR pour
- Entrée CODE>, mais de toute façon, je dois supprimer manuellement ce pot à partir de
Targetapp \ app code> plus tard.
Devrait dire que c'est étrange, que je peux supprimer le pot de Targetapp \ app \ app code> et le programme fonctionne toujours. Je ne vois aucun fichier pouvant contenir la logique du programme, mais cela fonctionne. J'ai même vérifié le travail dans des fenêtres claires dans VM.
UPD: Ils sont probablement dans Targetapp \ App \ Runtime \ Lib \ Modules CODE> Fichier.
Je l'ai testé un peu plus. Donc, il n'est pas important que le type de pot que vous utilisez, vous obtenez le même résultat pour JAR, Uber-JAR, JAR-avec dépendances (JAR et JARS dans le dossier Libs). La différence n'est qu'un bocal inutile ou des pots inutiles dans le dossier TearApp \ app \ app code> que vous devez supprimer manuellement.
Vous voudrez peut-être consulter le projet JPackagescriptfx sur GitHUB. Il contient un échantillon de structure de projet MAVAND MAVEN MAVEN MAVAND et de scripts pour Mac et Windows qui construiront tous les types d'emballages et exécutables disponibles pour les deux plates-formes. Vous pouvez le trouver ici: https://github.com/dlemmermann/jpackagescriptfx P>
Ma solution sans oracle code> jPackage code>:
jpackager code> + macos => .pkg code>, < Code> .dmg code> h1>
- Télécharger adoptopenjdk_13 . Décompressez et mettez dans
/library/java/javavirtualmachines/adoptopenjdk-13.jdk code> li>
- Télécharger
jpackager code> pour (dans mon cas osx) de https://mail.openjdk.java.net/pipetermail/openjfx-dev/2018-eptember/022500.html . Unzip. Li>
- copier
jdk.packager.jar code> et jpackager code> au /library/java/javavirtualmachines/adoptopenjdk-13.jdk/contents/home/bin code> (!!!) li>
- dans
/ votre espace de travail / cible code> doit être le fichier programa.jar em>. (Dans mon cas, c'est un petit programme créé avec OpenJFX + OpenJDK13) LI>
- le
/ votre travail / jlink code> désigne sur votre jre avec bac code>, lib code> etc. Vous avez peut-être créé via jlink code>. (Dans mon cas, j'ai mes modules personnalisés JRE + JAVAFX) LI>
- Le
/ votre espace / icônes code> contient .icns em>. li>
- Créer jpackager.command em> fichier dans votre espace de travail code> avec le contenu: li>
ul>
xxx pré> double clic sur jpackager.command em> qui est situé dans / votre site de travail attendre jusqu'à la jpackager < / Code> a créé programa-macos-1.0.pkg em> et programa-macos-1.0.dmg em> sous / yourworkspace / approximation code> p> Ma solution sans oracle code> jPackage code>:
p>
adoptopenjdk + jpackager code> + Windows => .msi Code> h1>
- Installez WIX (!!!) étape importante. strong> li> li>
- Télécharger adoptopenjdk_11 . Sera installé sous
C: \ Program Files \ Adoptopenjdk \ jdk-11.0.6.10-hotspot code> li>
- Télécharger
jpackager code> (dans ce cas gagne) de https://mail.openjdk.java.net/pipetermail/openjfx-dev/2018-eptember/022500.html . Unzip. Li>
- Copier
jdk.packager.jar code> et jpackager code> vers le C: \ Program Files \ Adoptopenjdk \ jdk-11.0.6.10-hotspot \ bin code > (!!!) li>
- dans
/ votre espace de travail / cible code> doit être le fichier programa.jar em>. (Dans mon cas, c'est un petit programme créé avec openjfx + openjdk11) li>
- le
/ votre travail / jlink code> désigne sur votre jre avec bac code>, lib code> etc. Vous avez peut-être créé via jlink code>. (Dans mon cas, j'ai mes modules personnalisés JRE + JAVAFX) LI>
- Le
/ votre espace / icônes code> contient .icns em>. li>
- Créez jpackager.bat em> fichier dans votre
/ votre dossier avec le contenu: li>
ul> xxx pré> note forte> le programa.jar em> doit être dans / votre site de gestion / cible code> chemin ( !!!) p> double clic sur jpackager.bat em> qui est situé dans / votre espace de travail attendre jusqu'à ce que le jpackager code> a Créé programa-win-1.0.msi em> sous / yourworkspace / approximation code> p> Mods personnalisés JRE + JAVAFX sous Windows H1>
Créer < Code> /Yourworkspace/jlink.bat code> fichier. Le contenu de celui-ci devrait être: p> xxx pré> ceci crée le dossier / Yourworkspace / jlink code> avec une bibliothèque JRE + JavaFX personnalisée que vous allez créer un lien vers < Code> jpackager code>. p> p>