java - 异常 JNI (Ljava/lang/String;)Ljava/lang/String;

标签 java c++ java-native-interface

我用 java 编写了一个小程序,它接受一个字符串作为用户输入。现在我已经制作了一个用 Visual C++ 编写代码的 dll。当我从 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);
}

最佳答案

@org.life.java ....我遇到了问题,这是我的错误,我没有包括 java 的头文件,它是 JNI 样式的头文件,即 Prompt.h在 C++ 中,"#include "jni_md.h"这将被删除并包含 "Prompt.h" 现在它工作正常。

关于java - 异常 JNI (Ljava/lang/String;)Ljava/lang/String;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3870043/

相关文章:

java - &-运算符和顺序的泛型歧义

java - g++ 编译后的核心转储 + 与 jni 的链接以及随后使用 C++ 和 Java 执行的应用程序

maven - 没有这样的字段错误: RESOURCE_PREFIX with a maven project using tess4j

c++ - 如何在 Android NDK 中读取硬盘中的图像?

c++ - 跟踪实例化模板类型 C++

c++ - CreateProcess 阻塞 - 奇怪的行为

java - 如何获取java 1.4中使用的原生C语言库的源码?

java - Cobertura 生成错误的代码覆盖率

java - 如何找到多个簇之间的最短路径

C++、泛型编程和虚函数。我怎样才能得到我想要的?