【发布时间】:2012-05-19 19:29:30
【问题描述】:
我的应用程序由三个组件组成:
- 小程序
- 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 路径是否有更好的解决方案?
【问题讨论】:
-
如何将原生库推送给客户端?我想你的小程序是用受信任的证书签名的,对吗?
-
是的,小程序是用受信任的证书签名的。 Native lib 使用 java 传递机制推送到客户端
标签: java linux ubuntu applet 32bit-64bit