【问题标题】:Loading libraries on Raspbian在 Raspbian 上加载库
【发布时间】:2019-02-07 22:32:33
【问题描述】:

我在 Raspberry Pi 3B 上运行 Java 应用程序,我的操作系统是 Raspbian。 该应用程序(在 x64 Windows 系统上编写)依赖 Dropbox Core sdk-3.0.6 从 Dropbox 服务器下载一些数据。 Dropbox Core SDK 需要另一个名为 Jackson Core 2.7.4 SDK 的库。

我已将两个 jar.files 都导入到目录 /home/lib/ 中。我正在从以下 .bat 文件运行应用程序:

> java -cp /home/lib/jackson-core-2.7.4.jar;/home/lib/dropbox-core-sdk-3.0.6.jar   -jar /home/ComRoll.jar

由于这些库,我不断收到错误消息。最常见的错误是关于杰克逊库:“无法执行二进制文件”。可能值得一提的是,错误消息会根据 .bat 文件中库的顺序而有所不同。当我以以下方式构建文件时,还有其他消息:

> java -cp /home/lib/dropbox-core-sdk-3.0.6.jar;/home/lib/jackson-core-2.7.4.jar   -jar /home/ComRoll.jar

我是基于 Linux 的系统的新手,希望我在这里遗漏了一些非常明显的东西,因为我开始担心整个 Dropbox SDK 都不符合 Raspberry Pi 的条件。

【问题讨论】:

  • 考虑将所有依赖项构建到一个 jar 中。这是一种相当普遍的做法,可以避免像你现在正在对抗的情况。它通常被称为“肥罐”。 stackoverflow.com/questions/19150811/what-is-a-fat-jar
  • 由于 Java 程序在 JVM 上运行,因此您的任何错误都不太可能与主机操作系统相关(尽管它们可能可能执行不同版本的已安装的 Java)。一般来说,如果Java在操作系统上运行,java应用程序不会有任何问题。

标签: java raspberry-pi jackson raspbian dropbox-api


【解决方案1】:

mkasberg 的 cmets 为我指明了正确的方向。 我用我在 Windows 系统上开发过程中使用的库构建了一个胖 jar。 最终,这种方法也出现了一些问题:一些库被签名了。我从项目中排除了这些库,现在胖罐子似乎在覆盆子上运行顺利。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-18
    • 2014-10-05
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2020-02-19
    相关资源
    最近更新 更多