JNI 教程,无法加载库

JNI Tutorial, cant'load library

本文关键字:加载 教程 JNI      更新时间:2023-10-16

我正在尝试执行此教程,这是针对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在一起,我可以使用一些帮助,谢谢

确保您对目录结构和lib文件本身进行了递归读取/写入权限。

尝试

sudo chmod ug+rwX -R /home/usr/NetBeansProjects/

将在文件和dirs上添加读/写权,并在已经具有用户执行标志的目录和文件上执行权限。

希望这会有所帮助。

我从不使用Mac,但是使用Windows我开始使用JNI时遇到了同样的问题。 有了您的问题,可能是很多事情或创建的DLL标志是不正确的,请确保您使用了正确的命令来创建DLL。我使用以下命令

gcc -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -I"C:Program FilesJavajdk1.7.0include" -I"C:Program FilesJavajdk1.7.0includewin32" -shared -o Sample1.dll Sample1.cpp

为此,我使用了mingw编译器。

  • 在Mac上的Windows DLL文件中,这将是这样的。我使用了命令 System.loadlibrary("youLibraryNameWithoutExtensionAndPath")在此之前,请访问您的项目构建路径并扩展JRE并选择本机库,然后单击"浏览",然后选择"放置dll/so so file and Ok"的文件夹。现在尝试运行您的代码。这将解决问题。