Hallo
das Leidige Thema Klassenpfad hat sich ja für die meisten seit Benutzung von Eclipse verabschiedet. Aber ich hab noch mal was:
Zur Einfachheit halber erklär ich mein Problem mal mit dem Laden eines Datenbanktreibers:
Also ich hab ein Programm was "prg.jar" heisst. Das ruft man normalerweise so auf:
Nun will ich aber ein Datenbanktreiber laden. Je nach dem welche Datenbank benutzt wird, kann ein anderer Treiber benutzt werden.
So:
1.) Wenn nich diesen Treiber nun in den Klassenpfad eintrage geht das nicht mehr. Er zieht den Klassenpfad NICHT an.
Wenn diese Variante funktionieren würde, wäre das die allerbeste Möglichkeit!
Das hier geht alles:
2.)
Ich kann den relativen Pfad des Treibers in das Manifest des Hauptprogramms schreiben. Dazu muss ich aber das "prg.jar" editieren. Is also für Anwender, die nicht programmierer sind ungebräuchlich.
3.)
Das ist aber Mist, weil man dann Auf die Klasse referenzieren muss, die mit gleichem Namen mehrfach vorkommen kann ... Und nochwas ... es sieht Sch... aus!
4.) Ich kann Variante 2 verwenden, d.h. im manifest steht ein relativer Pfad zu z.B "lib/treiber.jar", und das jeweilige JAR-File einfach in "treiber.jar" umbenamsen.
Das ist aber nicht die feine Art und ich hab einen höheren Anspruch
5.) Das möchte ich nun gerne wissen
oder ne Möglichkeit womit ich Variante 1 zum fliegen bekomme. Also ne Möglichkeit wie man das jar-File direkt aufruft aber trotzdem so frei ist dynamisch eine Klasse zu laden.
Das mit dem dynamischen Klassen laden ist zwar ne feine Sache, aber das muss schon sauber ablaufen!
Oder gibts ne Möglichkeit, das Manifest für n jarfile ausserhalb des jarfiles aufzubewahren und so editierbar zu machen?
Danke und Gruss an Alle ;-)
das Leidige Thema Klassenpfad hat sich ja für die meisten seit Benutzung von Eclipse verabschiedet. Aber ich hab noch mal was:
Zur Einfachheit halber erklär ich mein Problem mal mit dem Laden eines Datenbanktreibers:
Also ich hab ein Programm was "prg.jar" heisst. Das ruft man normalerweise so auf:
Code:
java -Ds=DasProgramm -jar prg.jar
Nun will ich aber ein Datenbanktreiber laden. Je nach dem welche Datenbank benutzt wird, kann ein anderer Treiber benutzt werden.
So:
1.) Wenn nich diesen Treiber nun in den Klassenpfad eintrage geht das nicht mehr. Er zieht den Klassenpfad NICHT an.
Code:
java -cp "driver-mysql.jar" -Ds=Test -jar prg.jar
Wenn diese Variante funktionieren würde, wäre das die allerbeste Möglichkeit!
Das hier geht alles:
2.)
Ich kann den relativen Pfad des Treibers in das Manifest des Hauptprogramms schreiben. Dazu muss ich aber das "prg.jar" editieren. Is also für Anwender, die nicht programmierer sind ungebräuchlich.
3.)
Code:
java -cp "driver-mysql.jar .. main.jar" -Ds=Test HauptProgramm.main
Das ist aber Mist, weil man dann Auf die Klasse referenzieren muss, die mit gleichem Namen mehrfach vorkommen kann ... Und nochwas ... es sieht Sch... aus!
4.) Ich kann Variante 2 verwenden, d.h. im manifest steht ein relativer Pfad zu z.B "lib/treiber.jar", und das jeweilige JAR-File einfach in "treiber.jar" umbenamsen.
Das ist aber nicht die feine Art und ich hab einen höheren Anspruch
5.) Das möchte ich nun gerne wissen
oder ne Möglichkeit womit ich Variante 1 zum fliegen bekomme. Also ne Möglichkeit wie man das jar-File direkt aufruft aber trotzdem so frei ist dynamisch eine Klasse zu laden.
Das mit dem dynamischen Klassen laden ist zwar ne feine Sache, aber das muss schon sauber ablaufen!
Oder gibts ne Möglichkeit, das Manifest für n jarfile ausserhalb des jarfiles aufzubewahren und so editierbar zu machen?
Danke und Gruss an Alle ;-)