# .jars in einem Ornder automatisch laden lassen



## s4ke (22. Apr 2011)

Hallo allerseits,

Ich hoffe, ich bin hier richtig. Und frage einfach mal heraus. Wie kann ich in Java externe Library-Jars aus einem Ordner laden lassen ohne vorher zu wissen, wie der Dateiname ist? Ich habe das bei einem Projekt von javazoom.com gesehen, da muss man nur die .jars laden, die für den jeweiligen Medientyp gebraucht werden und schon unterstützt das Programm diese auch.

Was muss ich dafür in den ClassPath schreiben?

Ich hoffe, ihr könnt mir helfen.

EDIT:

Oh, kann es sein, dass es so ähnlich wie hier funktioniert?


```
List<URL> url = new ArrayList<URL>();
for(String plugin: pluginDirectory.list()){
if (plugin.contains(".jar")) {
url.add(new URL("file", "localhost",
pluginDirectory.getCanonicalPath() + File.separator
+ plugin));
} else {
url.add(new URL("file", "localhost",
pluginDirectory.getCanonicalPath() + File.separator
+ plugin + File.separator));
}
}
URLClassLoader ucl = new URLClassLoader(url.toArray(new URL[0]);

ClassLoader.getSystemClassLoader());
```


----------



## Peter W. Marth (13. Mai 2011)

Hallo,

falls es sich um eine "normale" Java-Anwendung (kein Applet) handelt,
lässt sich das z.B. mit Batchdateien (Windows) bzw. mit einem
Shellscript (LINUX/UNIX) erledigen (Sourcen siehe unten). Damit werden 
einfach alle *.jar im Verzeichnis "pfad_zu_den_jarfiles" in den Classpath
aufgenommen.

Falls das Laden aber dynamisch zur Laufzeit erfolgen soll, wird die Sache erheblich
komplizierter.

Hoffe, das hilft weiter.

Die Batchdateien für Windows:

```
lcp.bat
-------
set _CLASSPATHCOMPONENT=%1
if ""%1""=="""" goto gotAllArgs
shift

:argCheck
if ""%1""=="""" goto gotAllArgs
set _CLASSPATHCOMPONENT=%_CLASSPATHCOMPONENT% %1
shift
goto argCheck

:gotAllArgs
set LOCALCLASSPATH=%_CLASSPATHCOMPONENT%;%LOCALCLASSPATH%


startup.bat
-------------
set LOCALCLASSPATH=
for %%i in ("pfad_zu_den_jarfiles\*.jar") do call "lcp.bat" %%i
java -classpath %LOCALCLASSPATH% meineStartklasse
```


Das LINUX/UNIX-Startscript:

```
startup.sh
-----------
LOCAL=
for i in pfad_zu_den_jarfiles/*.jar
do
        LOCAL=$LOCAL:$i
done
java -classpath $LOCAL meineStartklasse
```


----------



## maki (13. Mai 2011)

Ein selber geschriebenes dynamisches plugin System das richtig funktioniert ist komplexer als es auf den ersten Blick scheint, die eigentlichen Probleme kommen meist erst auf, wenn man schon lange davon ausgeht das alles funktioniert.

Seit Java 6 (denke ich) gibt es die Möglichkeit, auch Wildcards im Classpath zu verwenden.
Setting the class path


----------

