我正在编写一个应用程序,它利用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 主目录,以便我可以在大多数 Unixes/Linuxes 上进行这项工作?我晚上可以睡得更好,做一些类似的事情:
JAVA_HOME="$( ... )"
jsvc ... -home "$JAVA_HOME" ...
...而不是对每个单独的操作系统进行硬编码。有没有办法,给定一个java
二进制文件,我可以找到它的 JVM/JRE 的主目录?