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.
Legyen a példa kedvérét néhány osztály:
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!
A főosztály nevét írjuk mindig a Main-Class: szöveg után.
jar cvfm ProgramNev.jar manifest.mf *.class
java -jar ProgramNev.jar
Comment: Megjegyzés X-COMMENT: Másik megjegyzés
Main-Class: ProgramNev Class-Path: masikjarfile.jar harmadikjarfile.jar negyedikjarfile.jar
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.
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:
Ezért „*” karaktert használok a Makefile-ban, hogy jelezzem az össze .class kiterjesztésű fájlra szükségem van.
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.
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
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 *
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.
Ugyanaz széthúzott oldalsávnál:
Ki kell választanunk a main class-t:
Meg kell mondanunk, mit szeretnénk beletenni:
Az [ OK ] gombra kattintva, elkészül a projekt gyökérkönyvtárában a .jar fájl.