Il JAR dovrà essere eseguibile e contenere, oltre ai file compilati, i file sorgenti e il file info
. Per generare il JAR seguire scrupolosamente le indicazioni seguenti.
Supponiamo che il progetto abbia i seguenti package:
project.graph
project.treni
project.treni.util
Allora, prima di produrre il JAR del progetto conviene che i file siano distribuiti in opportune directory secondo il seguente schema:
base
|--- project
| |--- graph
| | |--- GraphClass1.class
| | |--- GraphClass2.class
. . . .
. . . .
. . . .
| |--- treni
| | |--- Main.class
| | |--- util
| | | |--- UtilClass1.class
| | | |--- UtilClass2.class
. . . .
. . . .
. . . .
|--- src
| |--- project
| | |--- graph
| | | |--- GraphClass1.java
| | | |--- GraphClass2.java
. . . . .
. . . . .
. . . . .
| | |--- treni
| | | |--- Main.java
| | | |--- util
| | | | |--- UtilClass1.java
| | | | |--- UtilClass2.java
. . . . .
. . . . .
. . . . .
|--- info.txt
Quindi, in una directory (che qui è chiamata base
) ci deve essere la gerarchia di directory che corrisponde ai package e che contiene i file compilati (i file .class
) e poi nella directory src
ci deve essere una eguale gerarchia di directory che contiene i file sorgenti (i file .java
). Inoltre, nella directory base ci sarà il file info.txt
. Per costruire il JAR del progetto, con ad esempio il nome Treni.jar
, basta eseguire il seguente comando, essendo posizionati nella directory base
:
jar -cfe Treni.jar project.treni.Main src project info.txt
Il comando crea un JAR che contiene le directory src
, project
(e il loro contenuto) e il file info.txt
. Inoltre, avendo specificato la classe che contiene il metodo main()
(cioè la classe project.treni.Main
), il JAR sarà direttamente eseguibile tramite il comando:
java -jar Treni.jar
Per estrarre tutti i file dal JAR si può eseguire il comando (da una qualsiasi altra directory in cui è stato posto il file Treni.jar
):
jar -xf Treni.jar
Questo riproduce la stessa gerarchia di directory e file che si aveva nella directory base. Inoltre, sarà anche generata la directory META-INF
contenente il file MANIFEST.MF
(prodotto automaticamente dal comando jar
). Prima di inviare il JAR del progetto accertarsi che risulti eseguibile e fare una estrazione per controllare che contenga tutti i file e directory.
Per maggiori informazioni sul comando jar
e i file JAR si può consultare il Tutorial.