ich bin schier verzweifelt.
Ich versuche eine NativeLib per System.loadLibrary() zu laden. Ich
weiss einfach nicht was ich falsch mache, ich hoffe mir kann jemand
von Euch helfen. Hier ein Codeausschnitt:
------
//aktueller lib-pfad:
String currentValue = System.getProperty( "java.library.path", ""
);
//m_DLLPATH= Pfad in dem die eInstall.dll liegt. (hier habe ich auch
mal mit "C:\\" getestet und dann auch dorthin die dll gelegt)
String newValue = new String( m_DLLPATH+";"+currentValue);
//Properties aktualisieren:
System.setProperty( "java.library.path", newValue );
System.out.println( "java.library.path = " +
System.getProperty("java.library.path", "") );
System.loadLibrary( "eInstall" );
-------
Als Fehlermeldung bekomme ich:
java.lang.UnsatisfiedLinkError: no eInstall in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1403)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:832)
at de.elster.client.util.JNI_Installer.<clinit>(JNI_Installer.java:48)
at de.elster.client.util.Installer.dllsInstaller(Installer.java:250)
at de.elster.client.util.Installer.dllsUpdater(Installer.java:142)
at de.elster.client.TestClass.importIni(TestClass.java:297)
...
Für Hilfe wäre ich sehr dankbar.
Gruss,
Christine
Klaus
> Kannst Du es erstmal versuchen, indem Du das System-Property nicht
> aenderst und die DLL manuell in den Pfad legst?
Oder das (eher die, oder?) System-Property vor (bzw. beim) Start der
Anwendung angeben (java -Djava.library.path=...) - zur Laufzeit lässt
sich diese nicht mehr ändern (bzw. lässt sich ändern, hat aber keine
Auswirkungen mehr, da der Wert von java.lang.ClassLoader gecacht wird).
Geht evtl. auch ein System.load("absoluter pfadname")? Laut API-Dok.
sollte es das tun...
Nico
Christine Kievernagel wrote:
> System.setProperty( "java.library.path", newValue );
Ich glaube, den java.library.path kann man nicht nachträglich ändern.
Das geht höchstens beim Aufruf mit dem Schalter -D.
Aber wenn Du den Pfad kennst, kannst Du die lib auch einfach mit
System.load(filename) laden.
Grüße,
tobi
>System.load("absoluter pfadname")?
Das war des Rätsels Lösung! Vielen Dank *freu* *spring* *Orden ansteckt*
Das war die Rettung. anscheinend kann man die Properties von library Path
zwar im nachhinein setzen, aber es hatte keinen Effekt.
Mit absolutem Pfad und System.load ("C:\\test\\test.dll"); hat es
funktioniert.
Gruss,
Christine