无法在Raspberry Pi

时间:2016-04-05 14:32:41

标签: java

我编译了一个在我的Mac OS机器上运行良好的Java应用程序(JAR)。它使用JNI调用已编译的C-Shared库,并使用jnr-ffi加载该本机代码。

我遇到了一堆来自jnr-ffi试图初始化的错误。看起来应该有一些jni文件作为Java安装的一部分存在于系统中,但它们不存在。

我无法逐字复制堆栈跟踪,但以下是一些应该有用的错误:

    Exception in thread "main" j.l.UnsatisfiedLinkError: could not load FFI provider jnr.ffi.provider.jffi.provider


Another unsatisfied link error below: /tmp/...gibberish..so cannot open shared object file: no such file or directory.

Another unsatisfied link error: Can't load library: /usr/lib/libjffi-1.2so

基本上是一堆与加载本机代码有关的错误。

我已经解压缩了我正在尝试运行的JAR并且它包含许多文件夹,例如arm-LinuxDarwini386-Linux和文件,这也是值得的。 libjffi-1.2.so所以看起来文件存在于JAR中,但在运行时,jave无法找到它们。

我无法弄清楚如何解决这个问题,并且它可以在我的其他机器上运行。怎么解决?

我尝试使用sudo运行。

1 个答案:

答案 0 :(得分:1)

当您运行JVM时,它将查找本机库并尝试加载它。遗憾的是,本机库在编译时不可移植,这就是您尝试运行的软件提供为不同体系结构编译的相同库的原因。

树莓派所需要的是arm-Linux

您只需要弄清楚JVM用于加载库的路径是什么,并且eighter配置软件以通过命令行加载正确的路径,或者将您在mac中使用的路径替换为编译为ARM。