在web开发中JNative 报 Native library not loaded 异常的解决

本文描述了一个使用JNative的Web应用程序遇到的问题,在Windows系统中将JNativeCpp.dll放置于system32目录下导致java.lang.IllegalStateException异常。通过将dll文件移至Tomcat的bin目录下解决了该问题。
在开发一个web的时候,一个类用了JNative,JNativeCpp.dll文件发到了windows/system32下面,
junit 也测试通过了,实际调用的时候报了个
java.lang.IllegalStateException: JNative library not loaded, sorry !
at org.xvolks.jnative.JNative. <init>(JNative.java:337)
at org.xvolks.jnative.JNative. <init>(JNative.java:269)
....
的错误,

后来把JNativeCpp.dll拷到tomcat的bin下面就解决了。

不过,不知道了解里面的机制。
在Linux上使用jnative.jar的方法与在Windows上略有不同,主要是需要注意以下几个问题: 1. 首先需要安装Java开发工具包(JDK)和C/C++开发工具包,可以使用以下命令在Ubuntu中安装: ``` sudo apt-get install default-jdk build-essential ``` 2. 然后需要下载并解压jnative.jar文件。可以在GitHub上找到最新版本的jnative.jar文件。 3.Java代码中使用jnative.jar加载.so文件和调用本地方法的方法与在Windows中略有不同。在Linux中,需要在Java命令行中指定.so文件的路径和jnative.jar文件的路径,例如: ``` java -Djnative.library.path=/path/to/libs -classpath /path/to/jnative.jar:/path/to/your/class YourClass ``` 其中,/path/to/libs是包含.so文件的目录的路径,/path/to/jnative.jar是jnative.jar文件的路径,YourClass是包含本地方法调用的Java类。 4. 在C/C++代码中实现本地方法的方法与在Windows中相同。需要注意的是,在Linux中需要使用C/C++编译器生成共享库文件(.so文件),例如: ``` gcc -shared -o libmylibrary.so MyLibrary.c ``` 其中,MyLibrary.c是包含本地方法实现的C/C++源代码文件。 如果仍然无法加载本地库文件,请检查相关的路径和库文件是否正确。你可以使用ldd命令查看.so文件依赖的库文件是否可用,例如: ``` ldd /path/to/libs/mylibrary.so ``` 这将列出.so文件依赖的所有库文件。如果其中有任何库文件无法找到,请检查系统是否安装了所有必需的库文件。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值