我使用命令提示符生成了一个带有jni的dll文件 . 我可以使用“java helloWorld”命令运行下面的代码 . 但我不能从日食中做到这一点 . 当我运行该程序时,我收到一个错误,说:
线程“main”中的异常java.lang.UnsatisfiedLinkError:java.lang.SolL中的java.lang.ClassLoader.loadLibrary(未知源)中java.library.path中没有native_library,java.lang.System上的java.lang.Runtime.loadLibrary0(未知源) helloWorld上的.loadLibrary(未知来源) . (helloWorld.java:6)
我已经使用了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);
}
2 回答
在我看来,硬编码你的DLL路径不是最好的主意 . 改为使用命令行参数:
对于Eclipse:打开构建路径(右键单击项目>“构建路径”>“配置构建路径...”)并设置“本机库位置”属性 .
我有同样的问题,我认为这是因为Ecplipse有自己的库路径,这与你的dll路径不同,尝试添加
即
它对我有用,希望这有帮助!