これは私の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++コードです
#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());
}
}
以下のコメントを使用してこのプログラムを実行します。
javac NativePrompt.java
javah NativePrompt
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.UnsatisfiedLinkError:java.lang.Runtime.loadLibrary0(Runtime.java:845)のjava.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)のjava.library.pathにNativePromptがありませんjava.lang.System.loadLibrary(System.java:1084)でNativePrompt。(NativePrompt.java:5)で