7

我已经开始构建一个包含 JNA 来加载本机 C/C++ 库的 java 服务,我想在 Raspberry PI aka arm 平台上运行 java 服务。我已经成功地建立了一个稳定的服务基础,它可以在 Windows7 和 linux-amd64/debian 上运行,但是.. 在 RPI 平台上,我收到上述错误:线程“main”中的异常 java.lang.UnsatisfiedLinkError: JNA native在资源路径中找不到支持 (/com/sun/jna/linux-arm/libjnidispatch.so)

在 RPI 上,我做了以下工作: * 安装了带有 arm 硬浮点支持的 openjdk7 和 java8 beta。* 安装 libjna-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

类路径

root@pisces:/opt/TellstickReplay# echo $CLASSPATH
/usr/lib/jna

这些设置似乎都不能满足 JNA 支持的 JAVA。我什至尝试将 jna.jar 和 linux-arm.jar 都导出到 Eclipse 中的项目中,然后一起将 jar 重新构建到导出的 jar 中,但仍然出现相同的错误。导出的 jar 已在 windows 和 linux 上成功测试,因此 jar 文件可以正常工作。

我也尝试在 jar 文件的 Manifest 中使用 CLASSPATH,但没有成功。我还尝试从绝对路径显式加载 libjnidispatch.so,但 JAVA 然后开始抱怨它无法找到 libjnidispatch.so 的文件,即使路径是 100% 正确的。

那么.. 有谁知道如何在 Raspberry PI 平台上正确获得 JNA 支持才能正常工作?拜托,我非常沮丧,很快就放弃了解决这个问题的希望..

4

5 回答 5

2

您系统上的 libjnidispatch.so 在哪里?如果它不在您的系统上,JNA 将尝试从指定资源路径的 jna.jar 中解压它。如果它也不存在,您将获得UnsatisfiedLinkError.

建议您尽可能在系统上显式安装 libjnidispatch.so;jna.jar 捆绑主要是为了方便在更常见的桌面平台上使用。

linux-arm.jar包含 libjnidispatch.so 的最新版本,但只有 WebStart 知道如何从这样的 jar 中自动加载本机。如果将其解压缩到 /opt/lib/jna(或 LD_LIBRARY_PATH 上的其他位置),则应避免链接错误。

于 2013-02-01T16:16:22.433 回答
2

我正在为 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
于 2015-06-11T18:28:53.397 回答
1

我打包了新的 jna.jar (4.0),它包括 linux-arm/libjnidispatch.so。我试图运行的代码现在可以工作了。

于 2014-01-16T00:16:20.523 回答
0

我会说它更多的是“您使用的操作系统中“libjnidispatch.so”的位置配置故障或特定的JRE系统内部文件夹/包/JNDI结构,它可能不是相同布局的Debian或Java JRE。

于 2013-02-01T00:17:58.293 回答
0

我执行以下操作:

  1. sudo apt-get 安装 libjna-java
  2. 获取安装的jar /usr/share/java/jna.jar
  3. 将 jna.jar 安装为 maven 依赖项

他们对我工作...

于 2020-08-31T22:51:14.847 回答