[[oktatas:programozás:java|< Java]] ====== Java jpackage ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2023 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== JAR ===== A jpackage parancsnak szükséges lehet kész .jar fájl. jar \ --create \ --main-class App \ --file mutat.jar \ -C bin . Ugyanaz rövidített kapcsolókkal: jar -c -e App -f mutat.jar -C bin . ===== jpackage ===== Kapcsolók: * https://docs.oracle.com/en/java/javase/17/docs/specs/man/jpackage.html (2023) jpackage \ --type app-image \ --input input \ --dest output \ --name App01 \ --main-jar App01-0.1.jar \ --main-class lan.zold.app01.App \ --icon app01.ico Típusnak megadható: * app-image * exe * msi * rpm * deb * pkg * dmg ===== Helló program Linuxon ===== Készítsünk egy Java alkalmazást például VSCode segítségével, **mutat** néven. Ha minden elkészült a következő könyvtár szerkezetet kapjuk. mutat/ |-.vscode/ | `-settings.json |-bin/ | `-App.class |-lib/ |-output/ | `-mutat_1.0-1_amd64.deb |-src/ | `-App.java |-gen_jar.sh |-gen_package.sh |-mutat.jar `-README.md public class App { public static void main(String[] args) throws Exception { System.out.println("Lássuk"); } } Egy futtatással elkészül a bin könyvtár benne az App.class. Készítsük el a mutat.jar fájlt: jar \ --create \ --main-class App \ --file mutat.jar \ -C bin . Készítsük el az output/mutat_1.0-1_amd64.deb csomagot: jpackage \ --type deb \ --input . \ --dest output \ --name mutat \ --main-jar mutat.jar \ --main-class App Linuxon a mutat alkalmazás a következő helyre telepszik: /opt/mutat Futtassuk: /opt/mutat/bin/mutat ===== Java 17 ===== A Java 17 verzióval ehhez hasonló hibát kapunk, ha /opt/mutat/bin/mutat-t futatjuk: $ /opt/mutat/bin/mutat pure virtual method called terminate called without an active exception Lássuk ===== Windows ===== Windowson útvonalba kell tenni a Java bin könyvtárát. Legyen például: * c:\Program Files\Java\jdk-17.0.2\bin\ Ellenőrzés: jpackage --version ==== JAR készítése ==== @echo off jar cfm mutat.jar manifest.mf -C bin/ . pause @echo off jpackage --type app-image --input . --dest output --name mutat --main-jar mutat.jar --main-class App pause Létrejön az output/mutat könyvtár, benne mutat.exe és más fájlok.