コマンドプロンプトを使用してjniでdllファイルを生成しました。「java helloWorld」コマンドで以下のコードを実行できます。しかし、日食からはできません。プログラムを実行すると、次のようなエラーが表示されます。
スレッド「メイン」の例外 java.lang.UnsatisfiedLinkError: java.lang.System の java.lang.Runtime.loadLibrary0(不明なソース) の java.lang.ClassLoader.loadLibrary(不明なソース) の java.library.path に native_library がありませんhelloWorld.(helloWorld.java:6) の .loadLibrary(不明なソース)
以下に示すように、native_library の絶対パスを使用しました。それの何が問題なのですか?
helloWorld.java:
public class helloWorld {
static{
System.loadLibrary("native_library");
System.load("C:/javaworkspace/helloWorld/src/native_library.dll");
}
public static native void writeout(String ss);
public static void main(String[] args) {
String sdf="Hello World";
writeout(sdf);
}
}
native_library.c:
#include <stdio.h>
#include "helloWorld.h"
JNIEXPORT void JNICALL Java_helloWorld_writeout
(JNIEnv * env, jclass clazz, jstring str2)
{
const char *nativeString = (*env)->GetStringUTFChars(env, str2, 0);
printf("%s \n",nativeString);
(*env)->ReleaseStringUTFChars(env, str2, nativeString);
}