Generazione del file JAR del progetto

Il JAR dovrà essere eseguibile e contenere, oltre ai file compilati, i file sorgenti e la relazione. Per generare il JAR seguire scrupolosamente le indicazioni seguenti.

Supponiamo che il progetto abbia i seguenti package:
project.archive
project.app
project.app.gui
project.app.tui
Allora, prima di produrre il JAR del progetto conviene che i file siano distribuiti in opportune directory secondo il seguente schema:
base
  |--- project
  |         |--- archive
  |         |         |--- ArchiveClass1.class
  |         |         |--- ArchiveClass2.class
  .         .         .           .
  .         .         .           .
  .         .         .           .
  |         |--- app
  |         |     |--- Main.class
  |         |     |--- gui
  |         |     |     |--- GuiClass1.class
  |         |     |     |--- GuiClass2.class
  .         .     .     .         .
  .         .     .     .         .
  .         .     .     .         .
  |         |     |--- tui
  |         |     |     |--- TuiClass1.class
  |         |     |     |--- TuiClass2.class
  .         .     .     .
  .         .     .     .
  .         .     .     .
  |--- src
  |     |--- project
  |     |         |--- archive
  |     |         |         |--- ArchiveClass1.java
  |     |         |         |--- ArchiveClass2.java
  .     .         .         .           .
  .     .         .         .           .
  .     .         .         .           .
  |     |         |--- app
  |     |         |     |--- Main.java
  |     |         |     |--- gui
  |     |         |     |     |--- GuiClass1.java
  |     |         |     |     |--- GuiClass2.java
  .     .         .     .     .         .
  .     .         .     .     .         .
  .     .         .     .     .         .
  |     |         |     |--- tui
  |     |         |     |     |--- TuiClass1.java
  |     |         |     |     |--- TuiClass2.java
  .     .         .     .     .
  .     .         .     .     .
  .     .         .     .     .
  |--- INFO.pdf
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à un file (qui chiamato INFO.pdf) che contiene la relazione. Per costruire il JAR del progetto, con ad esempio il nome App.jar, basta eseguire il seguente comando, essendo posizionati nella directory base:
jar -cfe App.jar project.app.Main src project INFO.pdf
Il comando crea un JAR che contiene le directory src, project (e il loro contenuto) e il file INFO.pdf. Inoltre, avendo specificato la classe che contiene il metodo main() (cioè la classe project.app.Main), il JAR sarà direttamente eseguibile tramite il comando:
java -jar App.jar
Per estrarre tutti i file dal JAR si può eseguire il comando (da una qualsiasi altra directory in cui è stato posto il file App.jar):
jar -xf App.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.