个人理财计划金钱舞是基于 Java 的,所以我希望能够在我的 Raspberry Pi 4 上的 Ubuntu 20.10 中运行 Moneydance - 但它抱怨 Java 版本 - MD 说:
No suitable Java Virtual Machine could be found on your system.
The version of the JVM must be at least 14.
Please define INSTALL4J_JAVA_HOME to point to a suitable JVM.
我最终弄清楚了如何让它工作,但是这个主题上有很多过时或不相关的链接,所以我在这里发布我的答案,希望它能够帮助别人。
答案1
首先,安装 Moneydance——很方便,你可以.deb
直接从网站上下载。该软件包似乎包含自己的 Java,但它是为 x86 平台编译的,显然无法在 Raspberry Pi 上运行。
因此,我们需要为 Moneydance 提供合适的 JVM。该default-jre
软件包是版本 11,因此您需要安装openjdk-14-jre
和设置INSTALL4J_JAVA_HOME=/usr/lib/jvm/java-14-openjdk-arm64
- 您可以export
在 shell 中使用,也可以编辑/opt/Moneydance/Moneydance
脚本。
但是,它仍然不起作用:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found
因此您需要安装该openjfx
软件包。但出于某种原因,这会将其文件放入其中/usr/share/java
,而 Moneydance 找不到它们。事实证明,您需要--module-path
在启动 MD 时使用开关来指定正确的目录——我编辑了 Moneydance 脚本,最后,当它运行时,$INSTALL4J_JAVA_PREFIX exec "$app_java_home/bin/java" ...
我添加了
--module-path /usr/share/java
但那不起作用:
Error occurred during initialization of boot layer
java.lang.module.FindException: Two versions of module org.apache.commons.lang3 found in /usr/share/java (commons-lang3.jar and commons-lang3-3.11.jar)
这是因为该目录有使 Java 混淆的符号链接;这是Debian 错误 933669。我的解决方案是在某处创建一个新目录(我用过/opt/Moneydance/jfx
)并从那里符号链接到我们需要的 .jar 文件:
javafx-base.jar -> /usr/share/java/javafx-base.jar
javafx-controls.jar -> /usr/share/java/javafx-controls.jar
javafx-graphics.jar -> /usr/share/java/javafx-graphics.jar
javafx-swing.jar -> /usr/share/java/javafx-swing.jar
在 Moneydance 脚本的模块路径中指定该目录:
--module-path /opt/Moneydance/jfx # or whatever directory you used
...然后您就可以运行 Moneydance。