Liebe Experten,
ich möchte alle jar-Bibliotheken, die sich in einem bestimmten Verzeichnis befinden, in den Klassenpfad einbinden, ohne alle einzeln angeben zu müssen.
Hat jemand eine Idee, wie das geht?
Vielen Dank im Voraus,
Matthias
Liebe Experten,
ich möchte alle jar-Bibliotheken, die sich in einem bestimmten Verzeichnis befinden, in den Klassenpfad einbinden, ohne alle einzeln angeben zu müssen.
Hat jemand eine Idee, wie das geht?
Vielen Dank im Voraus,
Matthias
Hallo Matthias,
z.B. so:
build.bat
---------
set CP=
for %%i in (lib\*.jar) do call cp.bat %%i
cp.bat
------
set CP=%CP%;%1
Gruss, Simon
Leider keine Lösung für mich
z.B. so:
build.bat
set CP=
for %%i in (lib*.jar) do call cp.bat %%i
cp.bat
set CP=%CP%;%1
Hallo Simon,
vielen Dank für deine Antwort. Leider löst das mein Problem nicht, denn ich wollte vermeiden, dass ich ein Startskript brauche (die Applikation soll wirklich betriebssystemunabhängig sein).
Viele Grüße,
Matthias
Hallo,
warum kopierst Du die Bibliotheken nicht da hin wo sie hingehören, nach c:\Programme\Java\j2resonstnochwas\lib\ext
Dann kannst Du Dir den CLASSPATH schenken.
Gruß
Peter
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
warum kopierst Du die Bibliotheken nicht da hin wo sie
hingehören, nach c:\Programme\Java\j2resonstnochwas\lib\ext
Seit wann gehören Applikations-Biblotheken ins ext-Verzeichnis?
Das ist sicher keine gute Idee (Versionen!!!)
Der Klassenpfad sollte immer explizit angegeben werden!
Wie wärs mit WebStart?
ich möchte alle jar-Bibliotheken, die sich in einem bestimmten
Verzeichnis befinden, in den Klassenpfad einbinden, ohne alle
einzeln angeben zu müssen.
Ich weiss nicht ob das auf Windows geht, aber auf HP-UX mit HP VM habe ich mal einen funktionierenden CLASSPATH mit Wildcards gesehen, da ist dann einfach „verzeichnis*.jar“ drinnengestanden.
Aber „dynamisch“ nachgeladen hat er da auch nicht, sondern einfach nur genommen was beim Hochfahren der VM halt da war.
Grüße, Robert
Applikationsbibliotheken gehören ins Applikationsverzeichnis und da ist auch kein CLASSPATH nötig. Die richtigen Bibliotheken z.b. die JDBC Treiber usw gehören genau da hin. Auf gar keinen Fall sollte man das einfach willkürlich auf seinen Rechner verteilen. Sonst fehlt bei der Auslieferung die Hälfte.
Gruß
Peter
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Moin
Das geht durchaus, allerding nicht ganz so voll-automatisch wie das normale Klassensystem:
URL[] U = new URL[1];
File jarfile = ....;
U[0] = jarfile.toURL();
URLClassLoader URLC = java.net.URLClassLoader (U, ClassLoader.getSystemClassLoader());
Object WAS\_AUCH\_IMMER\_INSTANZ = URLC.loadClass("WAS\_AUCH\_IMMER", true).newInstance();
Das muss man mit der ersten Klasse (hier mal der einfachheit halber „K1“) tun. Wenn K1 dann nach einer Klasse K2 (aus der gleichen jar) sucht wird automatisch URLC angesprochen.
Der URLClassLoader kann gut mit lokal gespeicherten jar’s. Man muss allerdings das Recht haben einen neuen ClassLoader zu erzeugen und java.net & java-io zu benutzen (Also bei Applets darf man das so nicht) Ausserdem geht es erst ab 1.2.
Für andere Konstruktoren, Methoden, Felder,… kuck dir java.lang.Class, java.lang.ClassLoader und java.lang.reflect.* an.
cu