0
votes

jpackage crée 2 copies de jre

J'utilise jPackage code> (avec JDK 14) pour créer une application JavaFX autonome.

La sortie de 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>

Est-ce que jPackage code> ne peut pas générer de fichiers inutiles? strong> p>


Ce que j'ai: p>

J'ai un projet simple créé à partir d'archétype Maven 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>

Je fais: 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>

    et tous les fichiers (et dossiers) (JRE (~ 53 Mo), JAR (~ 9 Mo), classes ...) dans Targetapp \ app \ app code> peut être en toute sécurité Supprimé, sauf app.cfg code> fichier. p>

    Après avoir supprimé ces fichiers i Exécutez TearApp \ app \ app.exe code> et ça marche bien. P >

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


0 commentaires

3 Réponses :


1
votes

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.


4 commentaires

Oui, c'est la raison. Mais - entrée est une option requise. Eh bien, j'ai spécifié sortiedirectory pour maven-shade-plugin et maven-jar-plugin donc j'ai le répertoire contenant uniquement un fichier JAR pour - Entrée , mais de toute façon, je dois supprimer manuellement ce pot à partir de Targetapp \ app plus tard.


Devrait dire que c'est étrange, que je peux supprimer le pot de Targetapp \ app \ app 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 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 que vous devez supprimer manuellement.



0
votes

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


0 commentaires

0
votes

Ma solution sans oracle jPackage :

adoptopenjdk + jpackager + macos => .pkg , < Code> .dmg
  • Télécharger adoptopenjdk_13 . Décompressez et mettez dans /library/java/javavirtualmachines/adoptopenjdk-13.jdk
  • Télécharger jpackager pour (dans mon cas osx) de https://mail.openjdk.java.net/pipetermail/openjfx-dev/2018-eptember/022500.html . Unzip.
  • copier jdk.packager.jar et jpackager au /library/java/javavirtualmachines/adoptopenjdk-13.jdk/contents/home/bin (!!!)
  • dans / votre espace de travail / cible doit être le fichier programa.jar . (Dans mon cas, c'est un petit programme créé avec OpenJFX + OpenJDK13)
  • le / votre travail / jlink désigne sur votre jre avec bac , lib etc. Vous avez peut-être créé via jlink . (Dans mon cas, j'ai mes modules personnalisés JRE + JAVAFX)
  • Le / votre espace / icônes contient .icns .
  • Créer jpackager.command fichier dans votre espace de travail avec le contenu: xxx

    double clic sur jpackager.command qui est situé dans / votre site de travail jpackager < / Code> a créé programa-macos-1.0.pkg et programa-macos-1.0.dmg sous / yourworkspace / approximation

    Ma solution sans oracle jPackage :

    adoptopenjdk + jpackager + Windows => .msi
    • Installez WIX (!!!) étape importante.
    • Télécharger adoptopenjdk_11 . Sera installé sous C: \ Program Files \ Adoptopenjdk \ jdk-11.0.6.10-hotspot
    • Télécharger jpackager (dans ce cas gagne) de https://mail.openjdk.java.net/pipetermail/openjfx-dev/2018-eptember/022500.html . Unzip.
    • Copier jdk.packager.jar et jpackager vers le C: \ Program Files \ Adoptopenjdk \ jdk-11.0.6.10-hotspot \ bin (!!!)
    • dans / votre espace de travail / cible doit être le fichier programa.jar . (Dans mon cas, c'est un petit programme créé avec openjfx + openjdk11)
    • le / votre travail / jlink désigne sur votre jre avec bac , lib etc. Vous avez peut-être créé via jlink . (Dans mon cas, j'ai mes modules personnalisés JRE + JAVAFX)
    • Le / votre espace / icônes contient .icns .
    • Créez jpackager.bat fichier dans votre / votre dossier avec le contenu: xxx

      note le programa.jar doit être dans / votre site de gestion / cible chemin ( !!!)

      double clic sur jpackager.bat qui est situé dans / votre espace de travail jpackager a Créé programa-win-1.0.msi sous / yourworkspace / approximation

      Mods personnalisés JRE + JAVAFX sous Windows

      Créer < Code> /Yourworkspace/jlink.bat fichier. Le contenu de celui-ci devrait être: xxx

      ceci crée le dossier / Yourworkspace / jlink avec une bibliothèque JRE + JavaFX personnalisée que vous allez créer un lien vers < Code> jpackager .


0 commentaires