Naf*_*Kay 7 java unix linux jsvc
我正在编写一个利用jsvcJava服务作为守护进程启动的应用程序.我需要使用类似的东西,jsvc因为我的应用程序使用1024以下的端口,但我真的不想以root身份运行它,以便创建的文件由另一个用户拥有.我还希望将依赖关系和配置保持在最低限度,以便所有客户端需求都是JVM并jsvc安装了二进制文件.
然而,似乎jsvc有一个主要的问题; 它无法在给定的Unix操作系统上检测到Java的主文件夹,这非常令人沮丧:
$ ./startup.sh
Cannot locate Java home
Run Code Online (Sandbox Code Playgroud)
我至少可以通过手动设置JVM主目录来解决Ubuntu上的问题:
jsvc ... -home /usr/lib/jvm/default-java/ ...
Run Code Online (Sandbox Code Playgroud)
有没有办法从Bash脚本动态确定Java主目录,所以我可以在大多数Unix/Linux上使这个工作?我晚上可以睡得更好,比如:
JAVA_HOME="$( ... )"
jsvc ... -home "$JAVA_HOME" ...
Run Code Online (Sandbox Code Playgroud)
...而不是为每个操作系统进行硬编码.有没有办法,给定java二进制文件,我可以找到其JVM/JRE的主目录?
不确定这是否适用于*nixes,但找到了这个解决方案:
JAVA_HOME="$( readlink -f "$( which java )" | sed "s:bin/.*$::" )"
Run Code Online (Sandbox Code Playgroud)
我已经在Ubuntu上测试了它并且它可以工作,但它不适用于OSX.
| 归档时间: |
|
| 查看次数: |
13359 次 |
| 最近记录: |