# JBuilder: JNI-Problem



## knopper (2. Jul 2004)

Hallo,

Nach erfolgreichen Erstellen und Kompilieren von h, cpp file in VC++, habe ich mit Myclass.class die Myclass.dll getestet.
Es funktioniert alles so weit. Nun habe ich Myclass.java und Myclass.dll in meinem JBuilder Projekt eingefügt. Aber beim Kompilieren bekomme ich immer diese Fehlermeldung.

java.lang.UnsatisfiedLinkError: get_method
	at mypackage.Myclass.get_method(Native Method)
	at mypackage.Myclass.main(mypackage.java:210)


Die Datei dll ist in allen nötigen Verzeichniss kopiert. 
Das Problem ist ich muss im Myclass.java Header die Zeile package mypackage reinschreiben.
Hat jemand eine Idee wie ich das Lösen kann ? Und das mit JBuilder.

Gruss


----------



## P3AC3MAK3R (2. Jul 2004)

Verschoben: IDEs und Tools.


----------



## Pulvertoastman (2. Jul 2004)

Deutet aber dennoch darauf hin, dass die DLL nicht gefunden wurde.

Vielleicht findest du hier noch ein paar Anregungen:
ttp://www.krucker.ch/Skripten-Uebungen/InfUeb/InfUeb.html


----------



## knopper (5. Jul 2004)

Hi Pulvertoastman,
Danke füe die hilfreiche Link. 
Ich kann das Beispiel durchführen ,aber beim Selbstertellen meiner JNI an Hand der Beschreibung  stosse ich immer auf die genannte Fehlermeldung. 
Ich habe dann auch nur ganz einfache Hello Klasse eingebunden, doch funzts im JBuilder nach wie vor nicht.  Mit Eclipse das gleiche Resultat.  Das ist wie verhext !
Es wäre nett wenn jemand von Euchauf den Fehler hinweisen kann ! oder mal step by step probieren, ob Ihr auch den selben Fehler habt wie ich habe.

Gruss


----------



## Pulvertoastman (5. Jul 2004)

Mir fällt gerade auf, dass du ja Fuschel C++ verwendest.


Hier kann es sein, dass du zwar eine DLL erstellt hast, diese aber keine Symbole exportiert, weil Microsoft das nämlich wieder mal alles ganz anders macht.

Achte darauf, dass deine Methoden auch exportiert werden mit


```
#define JNIEXPORT __declspec(dllexport)
#define JNICALL __stdcall
```


----------



## knopper (5. Jul 2004)

Hi, 
nun den beiden Zeilen hinzugefügt: 


```
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Hello*/

#ifndef _Included_Hello
#define _Included_Hello

#define JNIEXPORT __declspec(dllexport)
#define JNICALL __stdcall

#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Hello
 * Method:    hello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_Hello_hello
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif
```


Die Exportdatei heisst aber " ic.dll " ( Unterschiedliche Name erlaubt oder ? ).

Die Fehlermeldung:

 java.lang.UnsatisfiedLinkError: hello
	at netmaneger.NetManager.hello(Native Method)
	at netmaneger.NetManager.main(MipClientManager.java:262)


Wie gesagt, wenn ich eine Java datei selbst schreibe und dann kompieliert dann funktioniert das ganze.


----------



## knopper (6. Jul 2004)

Hi Leute,

Es liegt wohl an JBuilder, dass JBuilder VC++ dll file nicht vertägt.
Andere Leute hat es auch bestätigt.
Nun arbeite ich mit Eclipse und es funktioniert 

MfG


----------



## centrino (16. Aug 2004)

Hallo,

Ich ein Problem mit JNI .

Wenn ich eine .h datei aus einer Klasse erstelle, und dll datei bildet, funktioniert das ganze.
Aber wenn ich mein Projekt mit eine Package einpacke, dann bekomme immer den Fehler:

java.lang.UnsatisfiedLinkError: hello
	at Mypackage.MyClass.hello(Native Method)
	at Mypackage.MyClass.main(MipClientManager.java:514)

Wie kann ich nun die richtigen h Datei erstellen ?

Gruss


----------

