Announcement

Collapse
No announcement yet.

JNI funzt nicht???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JNI funzt nicht???

    Hallo.

    Ich bin gerade dabei, micht etwas mit JNI zu beschäftigen. Dazu wollte ich erstmal eine simple Hello World Anwendung erstellen.

    Das klappt auch soweit, dass ich keine Fehlermeldung mehr erhalte. Vorgehensweise müsste auch richtig sein: java code geschrieben; kompiliert; header erstellt; c code geschrieben; dll erzeugt.

    So sieht der java code aus:
    <PRE>
    public class jnihelloHelloWorld {

    public void jnihelloHelloWorld(){
    System.out.println(this.HelloWorld());
    }
    static{
    System.loadLibrary("hello");
    }
    public native int HelloWorld();
    public static void main(String[] args) {
    jnihelloHelloWorld jhw = new jnihelloHelloWorld();
    }
    }
    </PRE>

    und so der c code:
    <PRE>
    #include "C:\JBuilder4\jdk1.3\include\jni.h"
    #include "C:\jbproject\jnihello\classes\jnihello\jnihelloHe lloWorld.h"
    #include "C:\Programme\Microsoft Visual Studio\VC98\include\stdio.h"

    JNIEXPORT jint JNICALL
    Java_jnihelloHelloWorld_HelloWorld(JNIEnv *env, jobject obj)
    {
    printf("Hallo Welt");
    return (10);
    }
    </PRE>

    wie man sehen kann, soll sowohl "Hallo Welt" ausgegeben werden, als auch nur zum ausprobieren ein integer wert zurückgegeben werden.

    Wenn ich jetzt im JBuilder das Programm ausführe, passiert garnichts (auch keine Fehelermeldung :-)

    Hat jemand eine Ahnung?

    MfG Simon

  • #2
    Hallo!

    Auf den ersten Blick (vielleicht bin ich schon zu muede ;-) wuerde ich sagen: Du hast keinen Default-Konstruktor in der Java-Klasse.
    Nur eine Methode mit leeren Rueckgabewert jnihelloHelloWorld(). Der daher automatisch erzeugte leere Default-Konstruktor macht nichts. Das ist dann ja auch genau das, was Du beobachten kannst.

    Gruesse aus Hamburg,
    Stefa

    Comment


    • #3
      Nach einigem rumprobieren hab ich festgestellt, dass mein Problem anderer Natur war. Ich hab einfach vergessen, im header file und im c file den package name zu ergänzen, da javah das nicht automatisch verarbeiten kann.

      MfG Simo

      Comment

      Working...
      X