Veröffentlicht 5. November 201014 j Hallo, folgendes Szenario: Ich habe mehrere Versionen einer Anwendung, die ich in java über eine schon bereitgestellte Klasse aufrufen kann. Also z.B. c:\ver1\class.jar - in c:\ver1\runtime\ liegen dann die dlls und c:\ver2\class.jar - in c:\ver2\runtime\ liegen dann die dlls In meiner Java-Anwendung rufe ich eine Methode aus der class.jar auf, welche wiederum mit den dlls in dem runtime Verzeichnis kommuniziert. Der Source-Code der class.jar liegt mir leider nicht vor. Also, ich starte nun in einem batch-File meine Java-Anwendung - vorher setze ich den Classpath mit set path = %path%;C:\v11\class.jar;C:\ver1\runtime\ auf die ver1. Die class jar wird auch gefunden und geladen - aber beim Aufruf der dll-Dateien werden diese nicht gefunden, da das runtime-Verzeichnis nicht im globalen Pfad liegt. Wenn ich mir den aktuellen Java Lib Path ausgeben lasse, steht sowohl das jar-Verzeichnis als auch das Runtime-Verzeichnis drin. Eine Lösung ist natürlich, je nachdem welche Version ich benutzen will, den globalen Classpath im System zu ändern - dann funktioniert auch alles. Meine Frage: Geht es auch dynamisch? - kann ich den globalen Classpath des Systems dynamisch in Java ändern? - falls ich einen eigenen Classloader benutze und dort die Pfade hinzufüge - könnte es funktionieren? Ich bin da skeptisch, da es ja um die Kommunitkation zwischen Dll und jar geht. Falls es jemanden weiterhilft: Es geht im Grunde genommen darum, dynamisch verschiedene MCRs (Matlab Component Runtimes) zu benutzen. Freue mich über Tipps
9. November 201014 j Autor Danke für den Tipp. Mein Problem ist nur: Ich würde das setzen des Classpaths gerne dynamisch hinbekommen - der Code wird also ausgeführt und macht irgendwas, bis ein Algorithmus ausgeführt werden soll. Es wird nun in einer Datenbank ausgelesen, für welche Version dieser Alg. entwickelt worden ist - und dann dementsprechend der (globale?) Classpath gesetzt. Das wäre meine Wunschvorstellung.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.