C++ Jni不工作

C++ Jni不工作,c++,string,java-native-interface,unsatisfiedlinkerror,java.library.path,C++,String,Java Native Interface,Unsatisfiedlinkerror,Java.library.path,这是我的Java代码 class NativePrompt { private native String getInput(String prompt); //native method static //static initializer code { System.loadLibrary("NativePrompt"); } public static void main(String[] args) {

这是我的Java代码

class NativePrompt {
    private native String getInput(String prompt);  //native method
    static   //static initializer code
    {
        System.loadLibrary("NativePrompt");
    } 

    public static void main(String[] args)
    {
        NativePrompt NP = new NativePrompt();
        String sName = NP.getInput("Enter your name: ");
        System.out.println("Hello " + sName);
    }
}
我正在使用jdk1.7.0_17。 这是我的C++代码< /p>
#include "NativePrompt.h" 
#include "jni.h"
#include "string"
#include "iostream"
#include "vector"

using namespace std;
/*
 * Class:     NativePrompt
 * Method:    getInput
 * Signature: (Ljava/lang/String;)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_NativePrompt_getInput
    (JNIEnv *env, jobject obj, jstring prompt){

    string sEntry;
    const char *str;
    str = env->GetStringUTFChars(prompt, NULL);
    if (str == NULL) {
        return env->NewStringUTF("");
    }
    else{
    cout << str;
        //Frees native string resources
        env->ReleaseStringUTFChars(prompt, str);

        //reads n-consecutive words from the 
        //keyboard and store them in string
        getline(cin, sEntry);

        return env->NewStringUTF(sEntry.c_str());
    }
}
#包括“NativePrompt.h”
#包括“jni.h”
#包括“字符串”
#包括“iostream”
#包括“向量”
使用名称空间std;
/*
*类别:NativePrompt
*方法:getInput
*签名:(Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_NativePrompt_getInput
(JNIEnv*env、jobject对象、jstring提示符){
串哨;
常量字符*str;
str=env->GetStringUTFChars(提示,空);
如果(str==NULL){
返回env->NewStringUTF(“”);
}
否则{
无法释放StringUTFChars(提示,str);
//从列表中读取n个连续单词
//输入键盘并以字符串形式存储
getline(cin,哨兵);
return env->NewStringUTF(sEntry.c_str());
}
}
我使用下面的注释运行这个程序

javac NativePrompt.java

javah本地提示符

g++-o NativePrompt.so-shared-I/usr/lib/jvm/jdk1.7.0_17/include-I /usr/lib/jvm/jdk1.7.0_17/include/linux NativePrompt.cpp

导出LD_LIBRARY_PATH='/home/user/jniwork/'

java NativePrompt

现在我得到下面的错误。我不知道如何解决它

线程“main”java.lang.UnsatifiedLink中出现异常错误:否 位于的java.library.path中的NativePrompt loadLibrary(ClassLoader.java:1860)位于 位于的java.lang.Runtime.loadLibrary0(Runtime.java:845) java.lang.System.loadLibrary(System.java:1084)位于 NativePrompt.(NativePrompt.java:5)


尝试按以下方式启动应用程序:

java -Djava.library.path=/home/user/jniwork/ NativePrompt
在此之前,请将库从NativePrompt.so重命名为libNativePrompt.so


希望这对您有所帮助。

尝试以下方式启动您的应用程序:

java -Djava.library.path=/home/user/jniwork/ NativePrompt
在此之前,请将库从NativePrompt.so重命名为libNativePrompt.so


希望这对您有所帮助。

潜在问题可能是由于使用dafault软件包造成的。是否试图在某些程序包中移动
NativePrompt
?潜在问题可能是由于使用了dafault程序包。您是否试图在某个包中移动
NativePrompt