Automatisches Erzeugen von Java-Archiven
AllgemeinesKommandozeilenversionEclipse-Plugin
Bernd Eggink, monoped@users.sourceforge.net Projektseite: SourceForge.net
Reflection
Wenn die Option -d angegeben ist, durchsucht Autojar den Bytecode nach Aufrufen von Class.forName(name). Für jede Fundstelle wird eine Meldung ausgegeben. Ist der Klassenname name im Bytecode als Konstante (Stringliteral) abgelegt, kennt Autojar die zu ladende Klasse; die Meldung lautet dann z.B.
* Dynamic loading: class Test, method g, name="Blah"
Wurde die Option -a angegeben (impliziert -d), versucht Autojar, diese Klasse so einzubinden wie eine statisch referenzierte. Falls das gelingt, sieht die Meldung so aus:
* Dynamic loading: class Test, method g, name="Blah" (RESOLVED)
Ist name kein Literal, sondern eine Referenz, lässt sich nicht feststellen, um welche Klasse es sich handelt. Solche Aufrufe werden am Ende des Programmlaufs in einer getrennten Liste protokolliert. Beispiel:
* Dynamic loading, unknown classname:
    class Test, method f
    class Foo, method bar
Das resultierende Archiv ist dann möglicherweise unvollständig und seine Benutzung kann zu ClassNotFound - Exceptions führen; dies allerdings nur, wenn die entsprechenden Class.forName() - Aufrufe auch tatsächlich ausgeführt werden.

Aufrufe von Class.forName() in compilergenerierten Methoden werden ignoriert.

up
Created 2011-05-10 by mopcoge