Automatisches Erzeugen von Java-Archiven
Allgemeines
Kommandozeilenversion
Eclipse-Plugin
Bernd Eggink, monoped@users.sourceforge.net SourceForge Projektseite
englischEnglische Version
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 ggf. 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.

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.

Geschichte
Version 2.0: Interne Umstrukturierung im Zusammenhang mit der Plugin-Entwicklung. Die Klasse org.sourceforge.autojar.Ajar enthält das Interface, das von Autojar und dem Plugin benutzt wird. Protokollierung jetzt durch log4j.
Musterzeichen '?' und '*' werden in Klassennamen ausgewertet; damit können z.B. alle Klassen eines Packages global übernommen werden.
War-Archive werden wie jar-Archive behandelt, zip-Dateien werden automatisch entpackt und übernommen.
Erste Version des Eclipse-Plugins.

Die aktuellen Versionen autojar-2.0pre1 und autojar-plugin-1.0pre1 sind Vorabversionen und im Wesentlichen für tapfere Betatester gedacht!

Version 1.3.1: Kleinere Bugs entfernt.
Wenn -v angegeben ist, wird jetzt eine Liste der Archive ausgegeben, die im Classpath angegeben, aber nicht benötigt wurden.
Neue Option -X zum Ausschließen bestimmter Datei- oder Verzeichnisnamen.

Version 1.3: Umzug nach SourceForge.
Einige Bugs beseitigt. Normale Dateien werden jetzt auch korrekt behandelt, wenn sie mehrere Punkte enthalten.
Dynamisches Laden von Klassen wird erkannt; neue Optionen -d und -a.
Jeder Programmparameter kann von der Form @datei sein, nicht nur der erste.

Version 1.2.2: Einige Bugs entfernt.
Neue Optionen: -e, -q, -D.
Jokerzeichen ? and * können in in Suchpfaden verwendet werden.
Verbesserte Abhängigkeitsprüfung.
Fehlende Dateien werden gemeldet.

Version 1.1: Mit der Option -p kann ein Suchpfad für Nicht-Klassen-Dateien (z.B. .gif - Dateien) angegeben werden. Alternativ weist die Option -b autojar an, den Classpath auch für andere Dateien zu verwenden.

Bugs
Bitte melden Sie Bugs über das SourceForge Bug-System.
up