【发布时间】:2012-08-25 17:39:04
【问题描述】:
我正在编写一个应用程序,它利用jsvc 将Java 服务作为守护程序启动。我需要使用 jsvc 之类的东西,因为我的应用程序使用 1024 以下的端口,但我真的不想以 root 身份运行它,以便创建的文件归另一个用户所有。我还想将依赖项和配置保持在最低限度,以便所有客户端需要一个 JVM 和安装的 jsvc 二进制文件。
但是,jsvc 似乎有一个主要问题;它无法在给定的 Unix 操作系统上检测到 Java 的主文件夹,这非常令人沮丧:
$ ./startup.sh
Cannot locate Java home
至少通过手动设置 JVM 主目录,我已经能够在 Ubuntu 上解决这个问题:
jsvc ... -home /usr/lib/jvm/default-java/ ...
有什么方法可以从 Bash 脚本动态确定 Java 主目录,以便我可以在大多数 Unix/Linux 上进行这项工作?晚上我可以通过以下方式睡得更好:
JAVA_HOME="$( ... )"
jsvc ... -home "$JAVA_HOME" ...
...而不是对每个单独的操作系统进行硬编码。有没有办法,给定一个 java 二进制文件,我可以找到它的 JVM/JRE 的主目录?
【问题讨论】:
-
不是重复的;我正在尝试一般地定位 Java 主页,不仅适用于 Debian 发行版,还适用于 Red Hat、OSX 和其他 Linuxes/Unix。
-
请阅读 SO 链接。尤其是关于“update-java-alternatives/update-alternatives”的部分。