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