Исключение JNI (Ljava / lang / String;) Ljava / lang / String; - PullRequest
2 голосов
/ 06 октября 2010

Я сделал небольшую программу на Java, которая принимает строку как пользовательский ввод.Теперь я сделал dll, пишущий его код в Visual C ++.когда я запускаю свою программу из netbeans, она отображает это исключение.

Exception in thread "main" java.lang.UnsatisfiedLinkError: Prompt.getLine(Ljava/lang/String;)Ljava/lang/String;
        at Prompt.getLine(Native Method)
        at Prompt.main(Prompt.java:19)

Что за проблема.Нужна помощь.Спасибо

Это код Java

public class Prompt {

    /**
     * @param args the command line arguments
     */
    private native String getLine(String prompt);
    public static void main(String[] args) {
        // TODO code application logic here
        Prompt p = new Prompt();
        String input = p.getLine("Type a line:");
        System.out.println("User Typed:" + input);
    }
    static {
        System.loadLibrary("Prompt");
        //System.load("C:/Program Files/Java/jdk1.6.0/bin/Prompt.dll");
    }
}

, код C ++

#include "stdafx.h"
#include "jni.h"
#include "jni_md.h"

JNIEXPORT jstring JNICALL Java_Prompt_getLine(JNIEnv *env, jobject obj, jstring prompt)
{
    char buf[128];
    const char *str;
    str = env->GetStringUTFChars(prompt,0);
    if (str == NULL) {
        return NULL; /* OutOfMemoryError already thrown */
    }
    printf("%s", str);
    env->ReleaseStringUTFChars(prompt, str);
    /* We assume here that the user does not type more than
    * 127 characters */
    scanf("%s", buf);
    return env->NewStringUTF(buf);
}

1 Ответ

1 голос
/ 06 октября 2010

@org.life.java .... я получил проблему, и это была моя ошибка, я не включал заголовочный файл java, который является файлом заголовка стиля JNI, который Prompt.h в c ++, "#include "jni_md.h"это будет устранено и включено "Prompt.h", теперь оно работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...