# JNI: UNsatisfiedLinkError



## joergh (27. Sep 2007)

Hallo!

Ich versuche eine selbstgeschriebene C-dll mit Java anzusteuern, was leider eine Exception auslöst. Ich weiss leider nicht weiter. Beim googlen finde ich ähnliche Probleme, aber meins trifft es nicht.

Ich erhalte folgende Fehlermedung (Exception):

```
Exception in thread "main" java.lang.UnsatisfiedLinkError: symServer.Simu.startEngine(Ljava/lang/String;)I
at symServer.Simu.startEngine(Native Method)
```

Mein Java-Code:

```
package symServer;

public class Simu {
  private static native int startEngine(String s);
.
.
.
.

  protected void startTheEngine(){
     startEngine(stringS);
  }

  static {
    System.loadLibrary("simu");
  }
}
```

Der dazugehörige C-ode:


```
JNIEXPORT jint JNICALL Java_Simu_startEngine
   (JNIEnv *env, jclass simu, jstring modell)
{
   return 0;
}
```

Anfangs gab es eine ähnliche Fehlermeldung, weil er die DLL nicht finden konnte. Seit er sie findet, dieser Fehler....

Vielleicht kennt ja jemand das Problem und kann mir helfen.

Danke & GRuß


----------



## tuxedo (27. Sep 2007)

UnsatisfiedLinkError heisst doch dass er die DLL nicht findet ... ?! Such mal nach dem Fehler hier im Forum. Hatten wir bereits mehrfach.

- Alex


----------



## Murray (27. Sep 2007)

Wahrscheinlich hast du der Klasse ein Package verpasst, nachdem du die C-Header generiert hast; korrekt muesste die Funktion in C so aussehen

```
/*
 * Class:     symserver_Simu
 * Method:    startEngine
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_symserver_Simu_startEngine
 (JNIEnv *env, jclass simu, jstring modell)
{
   return 0;
}
```

@alex: wenn die DLL nicht gefunden wird, sieht die Meldung so aus:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no simu in java.library.path

Hier wurde die DLL gefunden, aber in der DLL existierte kein Binding für Methode symServer.Simu.startEngine(Ljava/lang/StringI (sondern eben nur für Simu.startEngine(Ljava/lang/StringI)


----------



## tuxedo (28. Sep 2007)

Hmm, stimmt, hab mich wohl vom ersten Teil der Exception etwas verleiten lassen den rest nicht mehr korrekt zu lesen ;-)


----------

