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