2010-12-29 5 views
1

In diesem Fall würde man eine URLClassLoader verwenden, um eine Klasse aus einem bestimmten jar in einem angegebenen Pfad zu laden?
Zum Beispieljava urlclassloader usage.Ist es nur in seltenen Fällen benötigt?

URL url = new URL("file:///path/to/customClasses.jar"); 
URLClassLoader pluginLoader = new URLClassLoader(new URL[] { url }); 
Class<?> cl = pluginLoader.loadClass("apackage.MyCustomClass"); 

Wenn ich wollte Klassen von customClasses.jar verwenden, dachte ich immer, dass accesible von CLASSPATH in einem Pfad dieses Gefäß platziert genug ist.
Dann in meinem Code einfach apackage.MyCustomClass verwenden.
Ich denke, ich habe etwas missverstanden oder fehlt hier, also könnte jemand bitte erklären und ein Beispiel geben, wenn das obige Schnipsel der Ladeklasse auf diese Weise nützlich ist?
Danke!

+0

Sagen Sie dynamisch erstellt oder geladen zu laden Code in der Lage sein wollte, nachdem das Programm gestartet. Sie können später auch eine andere Version dieses Glases laden. –

+0

@Peter Lawrey: Es tut mir leid, aber ich verstehe nicht, was Sie meinen, wenn Sie sagen "Laden Code-Creator/dynamisch geladen" – Cratylus

+0

@ user384706, sagen Sie haben eine dynamisch geladene Anwendung, die Common-Logging v1.0, später Sie benötigt Laden Sie eine Anwendung, die commons-logging v1.1 benötigt. Sie können die erste Bibliothek löschen oder beide mit benutzerdefinierten Ladeprogrammen laden. –

Antwort

2

Ich würde sagen, dass abhängig von der Art der Programmierung, die Sie tun, die Verwendung der URLClassLoader eine sehr seltene Erscheinung sein sollte.

In der Regel verwenden Sie den Klassenlader zum Laden in Klassen zur Laufzeit, die Sie im Voraus nicht voraussehen konnten.

Ein gutes Beispiel ist, wenn Sie ein Tool erstellen, das mit Plugins erweitert werden kann, und die Plugins zur Laufzeit geladen werden. Zum Beispiel Eclipse.

Wenn Sie das Jar zur Kompilierzeit verfügbar haben und sich in einer Befehlszeile befinden, fügen Sie die benötigte JAR-Datei zu Ihrer Kompilierungsanweisung hinzu. Zum Beispiel

javac -cp /path/to/lib/customClasses.jar MyClassThatReferencesCustomClasses 

Wenn Sie Eclipse-verwenden, fügen Sie das Glas zu einem Projekt, und direkt darauf klicken und wählen Sie Hinzufügen Weg zu bauen.

Grüße,

Will

Verwandte Themen