我的应用程序由三个组件组成:
- 小程序
- Java 程序 (myapp.jar)
- JNI 库 (myjni.so)
请注意,JNI 库是为 32 位构建的。在 32 位操作系统上,小程序使用java.home
属性来获取 JRE 路径。一旦小程序获得 JRE 路径,它就会像这样启动 JAR
JRE-path myapp.jar
现在我需要在 64 位 Linux 上运行这个应用程序。在这里,我有两个选择:
- 为 64 位构建 JNI 库。这是不可能的,因为所有依赖的库都需要为 64 位构建。(这是我最后的一个约束)
- 要求用户安装 32 位 JVM 现在的问题是如何获取 32 位 JRE 路径,因为
java.home
属性给出了 64 位 JRE 路径。(因为浏览器和插件都是 64 位的)。一种选择是使用update-alternatives –list java
命令获取所有 JRE 安装路径。然后对于每个安装路径,运行JRE-path -d32 –version
命令查看是否支持32位JVM
- 如果它支持 32 位 JVM,请使用该 JRE 路径来启动 JAR 文件
- 如果没有任何 java 安装支持 32 位 JVM,则显示安装 32 位 JVM 的消息
问题:
- 上述解决方案有什么问题吗?(我需要在 Ubuntu、Redhat 和 OpenSuse 上使用这个解决方案)
- 在 64 位 Linux 上获得 32 个 JRE 路径是否有更好的解决方案?