我已经开始构建一个java服务,它包含JNA以加载本机C/C++库,我想在Raspberry PI aka arm平台上运行java服务.我已成功建立了稳定的服务基础,它在Windows7和linux-amd64 / debian上运行,但是在RPI平台上我得到了上述错误:
线程“main”中的异常java.lang.UnsatisfiedLinkError:资源路径中找不到JNA本机支持(/com/sun/jna/linux-arm/libjnidispatch.so)
在RPI上,我做了以下事情:
*安装了openjdk7和java8 beta,支持arm hard float.
*安装了libjna-java lib.
以下是:
Java的
root@pisces:/opt/TellstickReplay# java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b36e)
Java HotSpot(TM) Client VM (build 25.0-b04,mixed mode)
root@pisces:/opt/TellstickReplay#
LD_LIBRARY_PATH
root@pisces:/opt/TellstickReplay# echo $LD_LIBRARY_PATH
/opt/lib/jna
CLASSPATH
root@pisces:/opt/TellstickReplay# echo $CLASSPATH
/usr/lib/jna
没有任何设置似乎满足JAVA与JNA支持.我甚至试图将jna.jar和linux-arm.jar导出到Eclipse中的项目中,并且一起将jar重建为导出的jar仍然得到相同的错误.导出的jar已在windows和linux上成功测试,因此jar文件正在运行.
我也尝试在jar文件中的Manifest中使用CLASSPATH但没有成功.我也尝试从绝对路径显式加载libjnidispatch.so,但JAVA然后开始抱怨它找不到libjnidispatch.so文件,即使路径是100%正确.
最佳答案
我正在为RPI2重新编译Apache Spark,我花了几天时间来解决这个问题.然后我找到了最简单的解决方案.您需要拥有的是默认JVM的本机lib路径中的libjnidispatch.so链接.
sudo -s ln -s /usr/lib/arm-linux-gnueabihf/jni/libjnidispatch.so /usr/lib/jvm/default-java/jre/lib/arm/libjnidispatch.so