[[:oktatas:programozás:java|< Java]]
====== Java jar fájl készítése ======
* **Szerző:** Sallai András
* Copyright (c) 2011, Sallai András
* Szerkesztve: 2011, 2015, 2023
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== A JAR fájlokról =====
A JAR fájlokat ezért hozzuk létre, hogy több állományban lévő osztályainkat egy "archív" fájlba rendezzük.
Egy ilyen JAR fájl nem más, mint egy olyan ZIP állomány, amely java osztályokat és hozzájuk tartozó metaadatokat tartalmaz.
===== JAR fájl készítése =====
==== JAR kiindulási állományok ====
Legyen a példa kedvérét néhány osztály:
* ProgramNev.class
* ProgramNev$egyik.class
* ProgramNev$masik.class
A főosztály a ProgramNev.class
Készítünk egy manifest.mf nevű fájlt a következő tartalommal:
Main-Class: ProgramNev
**A ProgramNev után kell egy sortörés!**
==== Elkészítés ====
A főosztály nevét írjuk mindig a Main-Class: szöveg után.
jar cvfm ProgramNev.jar manifest.mf *.class
==== Futtatás ====
java -jar ProgramNev.jar
===== Megjegyzés =====
Comment: Megjegyzés
X-COMMENT: Másik megjegyzés
===== Más jar fájlok használata =====
==== manifest fájl készítése ====
Main-Class: ProgramNev
Class-Path: masikjarfile.jar harmadikjarfile.jar negyedikjarfile.jar
==== Elkészítés ====
Ugyanúgy készítjük el a JAR fájlt.
jar cvfm ProgramNev.jar manifest.mf *.class
A plusz JAR fájlt nem tesszük a ProgramNev.jar fájlba.
Terjesztéskor csak mellé tesszük.
==== Közzétett fájlok ====
* ProgramNev.jar
* masikjarfile.jar
* harmadikjarfile.jar
* negyedikjarfile.jar
* ProgramNev_Start.sh
* ProgramNev_Start.bat
===== Több osztályból álló állományainkból jar fájl =====
Adott példaként a következő projekt:
CarRace
|--controller
| |--Controller.java
|
|--view
| |--Car.java
| |--ButtonPanel.java
| |--DisplayPanel.java
| |--MainWindow.java
| |--Track.java
|
|--CarRace.java
|--Makefile
Elkészítjük hozzá a megfelelő mainfest.mf fájlt:
Main-Class: CarRace
Class-Path: controller/Controller view/Car view/ButtonPanel
Class-Path: view/DisplayPanel view/MainWindow view/Track
Egy Makefile, amivel jar fájl is készíthető:
SOURCES=CarRace.java \
view/Car.java \
view/MainWindow.java \
view/Track.java \
view/ButtonPanel.java \
view/DisplayPanel.java \
controller/Controller.java
all:
javac $(SOURCES)
CLASSES=CarRace.class \
view/*.class \
controller/*.class
JARFILE=CarRace.jar
MANIFEST=manifest.mf
jar:
jar cvfm $(JARFILE) $(MANIFEST) $(CLASSES)
run:
java -jar $(JARFILE)
A jar fájlkészítő parancsnál ügyeljünk arra, hogy minden .class kiterjesztésű
fájlt be kell építeni a jar fájlba.
A controller/ könyvtárban például a következő .class fájlok vannak:
* Controller.class
* Controller$1.class
* Controller$2.class
* Controller$3.class
* Controller$4.class
* Controller$5.class
* Controller$6.class
Ezért "*" karaktert használok a Makefile-ban, hogy jelezzem az össze .class
kiterjesztésű fájlra szükségem van.
===== Indító fájlok készítése =====
Lefordítjuk az osztályokat:
javac *.class
Elkészítjük a jar fájlt:
echo Main-Class: MyMainClassName > manifest.txt
jar cvfm MyOwnJarfile.jar manifest.txt *.class
Elkészítjük a futtató scriptet ( .bat vagy .sh script)
echo java -jar MyOwnJarfile.jar > start.bat
Ez után mehet az indítás.
===== Szimpla program ikonnal =====
Projekt01/
|
|--bin/
|
|--class/
| |
| |--Mainwindow.class
|
|--images/
| |
| |--projekt01Icon_32x32.png
|
|--src/
|
|--Mainwindow.java
|
|--Makefile
|
|--manifest.mf
JFLAGS= -g
JC=javac
JVM=java
SRCS=Mainwindow.java
PROG=Projekt01
CLASSPATH=../class
JAR=jar
MANIFEST=manifest.mf
JARFLAGS=cvfm
BIN=../bin
RM=rm -f
all:
$(JC) -Xlint:all -d $(CLASSPATH) $(SRCS)
run: $(SRCS)
$(JVM) -cp ..:$(CLASSPATH) $(PROG)
clean:
$(RM) $(CLASSPATH)/*.class
$(RM) $(BIN)/*.jar
$(RM) *.class
jar:
$(JAR) $(JARFLAGS) $(BIN)/$(PROG).jar $(MANIFEST) -C $(CLASSPATH) .
$(JAR) -uvf $(BIN)/$(PROG).jar ../images/projekt01Icon_32x32.png
===== MVC használata =====
projekt01
|--classes/
| |
| |--controller/
| | |--Controller.class
| | `--MasController.class
| |--model/
| | `--Model.class
| |--view/
| | |--Mainwindow.class
| | `--Masview.class
| `--Prog01.class
|--src/
`--manifest.mf
Main-Class: Prog01
cd classes
jar cvfm ../tpgt.jar ../manifest.mf classes/
Ha Makefile-t írunk:
jar:
cd classes; jar cvfm ../tpgt.jar ../manifest.mf *
===== VSCode =====
A Visual Studio Code-ban nyissuk meg egy .java kiterjesztésű fájlt.
Megjelenik a Java projects nézet. Ott találunk egy jobbra mutató nyilat, talppal.
{{:oktatas:programozas:java:vscode_make_jar_jelolve.png?400|}}
Ugyanaz széthúzott oldalsávnál:
{{:oktatas:programozas:java:vscode_make_jar_szethuzva_jelolve.png?400|}}
Ki kell választanunk a main class-t:
{{:oktatas:programozas:java:vscode_make_jar_mainclass.png?400|}}
Meg kell mondanunk, mit szeretnénk beletenni:
{{:oktatas:programozas:java:vscode_make_jar_select-jar.png?400|}}
Az [ OK ] gombra kattintva, elkészül a projekt gyökérkönyvtárában a .jar fájl.