我正在尝试为JNI做这个教程
https://netbeans.org/kb/docs/cnd/beginning-jni-linux.html
我已经在那里做了一切,但我遇到了这个麻烦
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /home/usr/NetBeansProjects/JNIDemoCdl/dist/libJNIDemoCdl.so
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1846)
at java.lang.Runtime.load0(Runtime.java:795)
at java.lang.System.load(System.java:1061)
at jnidemojava.Main.<clinit>(Main.java:13)
Java结果:1
我现在有点坚持使用JNI,我可以使用一些帮助,谢谢
答案 0 :(得分:0)
确保您对目录结构和lib文件本身具有读/写权限。
尝试
sudo chmod ug+rwX -R /home/usr/NetBeansProjects/
这将为文件和目录添加读/写权限,并对已经拥有用户执行标志的目录和文件执行权限。
希望这有帮助。
答案 1 :(得分:0)
我从不使用mac而是使用windows我在开始使用jni时遇到了同样的问题。 对于你的问题,它可能是很多东西或一个 创建的dll标志不正确,请确保已使用正确的命令创建dll。 我使用以下命令
gcc -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -I"C:\Program Files\Java\jdk1.7.0\include" -I"C:\Program Files\Java\jdk1.7.0\include\win32" -shared -o Sample1.dll Sample1.cpp
为此我使用了mingw编译器。
System.loadlibrary("youLibraryNameWithoutExtensionAndPath")
在此之前转到项目构建路径并展开jre并选择本机库然后单击眉毛并选择放置dll / so文件的文件夹并确定。
现在尝试运行您的代码。这将解决问题。但是如果dll / so文件有依赖lib,那么你必须将所有dll文件放在system32文件夹中(在windows中)