【发布时间】: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