ich habe ein Problem aus Java eine DLL aufzurufen. Die DLL liegt in meinem Zugriffspfad. Habe ich durch umbenenen der DLL getestet. Entsprechende Fehlermeldung kommt dann auch in Java.
Also: Wenn ich mein Programm ohne Package laufen lasse funktioniert alles problemlos. Wenn ich allerdings mein Programm in ein Package verschiebe dann kommt ein Fehler.
Meine Programme sehen wie folgt aus:
Programm in dem die DLL aufgerufen wird und die Methoden stehen
package de.server;
public class Gen132
{
public native String methode1( String strData );
public native String methode2( String strEncyptedData );
static
{
System.loadLibrary( „Gen132“ );
}
}
Programm zum Testen der Funktion:
package de.server;
public class Gen132Test
{
public static void main( String[] args )
{
System.out.println(„java.library.path :“ +
System.getProperty(„java.library.path“));
Gen132 gen = new Gen132();
String strText = new String( „Eingabe“ );
Fehlermeldung:
java.lang.UnsatisfiedLinkError: methode1
at de.server.Gen132.methode1(Native Method)
at de.server.Gen132Test.main(Gen132Test.java:13)
Exception in thread „main“
Wieso findet er die Methode „methode1“ nicht mehr wenn ich die Programme in ein Package verschiebe ?
Was kann man tun ? Man müßte doch die DLL bzw. die Methoden der DLL immer aufrufen können wenn die DLL im Zugriffspfad liegt.
Wenn ich die DLL umbenenne kommt auch entspr eine andere Meldung:
no Gen132 in java.library.path.
Die DLL selbst ruft wiederum eine DLL auf. Aber auch diese ist im Zugriff.
ich habe ein Problem aus Java eine DLL aufzurufen. Die DLL
liegt in meinem Zugriffspfad. Habe ich durch umbenenen der DLL
getestet. Entsprechende Fehlermeldung kommt dann auch in Java.
Also: Wenn ich mein Programm ohne Package laufen lasse
funktioniert alles problemlos. Wenn ich allerdings mein
Programm in ein Package verschiebe dann kommt ein Fehler.
…liegen die java Codes auch in einem Verzeichnis …/de/server ?
Meine Programme sehen wie folgt aus:
Programm in dem die DLL aufgerufen wird und die Methoden
stehen
package de.server;
public class Gen132
{
public native String methode1( String strData );
public native String methode2( String strEncyptedData );
static
{
System.loadLibrary( „Gen132“ );
}
}
Programm zum Testen der Funktion:
package de.server;
public class Gen132Test
{
public static void main( String[] args )
{
System.out.println(„java.library.path :“ +
System.getProperty(„java.library.path“));
Gen132 gen = new Gen132();
String strText = new String( „Eingabe“ );
Fehlermeldung:
java.lang.UnsatisfiedLinkError: methode1
at de.server.Gen132.methode1(Native Method)
at de.server.Gen132Test.main(Gen132Test.java:13)
Exception in thread „main“
Wieso findet er die Methode „methode1“ nicht mehr wenn ich die
Programme in ein Package verschiebe ?
Was kann man tun ? Man müßte doch die DLL bzw. die Methoden
der DLL immer aufrufen können wenn die DLL im Zugriffspfad
liegt.
Wenn ich die DLL umbenenne kommt auch entspr eine andere
Meldung:
no Gen132 in java.library.path.
Die DLL selbst ruft wiederum eine DLL auf. Aber auch diese ist
im Zugriff.
…aber weiss der java Compiler von den Pfaden ? Evtl. hilft das Verschieben
der dll Datei(en) in den Pfad der java Programme.