Automatisches Erzeugen von Java-Archiven
AllgemeinesKommandozeilenversionEclipse-Plugin
Bernd Eggink, monoped@users.sourceforge.net Projektseite: SourceForge.net
Allgemeines
Kurzbeschreibung
Autojar dient dazu, jar-Archive minimaler Größe aus unterschiedlichen Qellen (eigenen Klassen, Verzeichnissen, Archiven) zu erzeugen. Ausgehend von einer oder mehreren Klassen wird der Bytecode rekursiv nach weiteren benutzten Klassen durchsucht; diese werden aus ihrem Archiv extrahiert und in die Ausgabedatei übernommen. Das resultierende Archiv enthält alle tatsächlich benutzten Klassen, und nur diese. Somit lassen sich z.B. Größe und Ladezeit von Applets klein halten oder Applikationen unabhängig von installierten Bibliotheken machen.

Ähnlich wie nach Klassen kann Autojar Verzeichnisse und Archive auch nach anderen Ressourcen (wie Bilddateien) durchsuchen und die gefundenen Dateien automatisch angefügen. Weitere Anwendungsmöglichkeiten sind das Vereinigen mehrerer Archive zu einem einzigen, oder das Austauschen einzelner Klassen in einem jar-File.

Ein prinzipielles Problem stellt reflection dar. Autojar kann nicht wissen, welche Klassen das Programm zur Laufzeit mit Class.forName() lädt. Es kann aber im Bytecode nach Aufrufen von Class.forName() suchen und entsprechende Warnungen ausgeben. Nur wenn ein konstanter Klassennamen als Parameter verwendet wird, ist Autojar in der Lage, die Klasse zu suchen und automatisch einzubinden.

Ähnliches gilt für den Zugriff auf Resourcen mit Class#getResource(), Class#getResourceAsStream(), ClassLoader#getResource und ClassLoader#getResourceAsStream(). Wenn hierbei ein konstanter String als Parameter angegeben ist, kann Autojar über den Classpath nach der Datei suchen und sie in das Archiv übernehmen. Ist der Parameter keine Konstante, gibt Autojar auch hier eine Warnung aus.

Autojar ist mit JREs ab 1.4.2 verwendbar. Es benutzt Klassen aus dem BCEL-Paket (http://jakarta.apache.org/bcel/) und aus log4j (http://logging.apache.org/log4j/).

Ab Version 2.0 gibt es Autojar in zwei Varianten: Ein Kommandozeilen-Programm, das über Optionen gesteuert wird, und ein Plugin für Eclipse.

Bugs
Bitte melden Sie Bugs über das SourceForge Bug-System.
up
Created 2011-05-10 by mopcoge