每次都使用特定参数启动Java

时间:2015-04-18 18:35:39

标签: java bash

我有一个允许我定义java可执行文件(/usr/bin/java)的程序,但不允许我向可执行文件添加特定参数。

我希望每次都能使用特定参数运行Java,以便启用Security Manager。

到目前为止,我已尝试在/usr/bin/java之后添加参数,因此它看起来像

java=/usr/bin/java -Djava.security.manager -Djava.security.policy=/home/java.policy

这不起作用,因为程序可能会检查文件是否存在。我尝试的另一种方法是创建一个名为java的bash脚本,其中包含:

/usr/bin/java -Djava.security.manager -Djava.security.policy=/home/java.policy $*

然后我将java路径设置为/home/java(我脚本的位置)。然而,这也没有用。有什么方法可以做到吗?

感谢。

2 个答案:

答案 0 :(得分:1)

将您的java调用放入shell脚本java.sh

#!/bin/bash

/usr/bin/java -Djava.security.manager -Djava.security.policy=/home/java.policy $@

使用chmod u+x java.sh更改权限,然后使用java=./java.sh调用您的程序(根据需要调整脚本路径)。

关于可执行位和shebang行的注释

shebang行(#!/bin/bash)和执行权限在这里都很重要。没有它们,exec*系列的系统调用将失败,因为内核不知道如何处理该文件,或者因为缺少可执行位而导致执行被拒绝。

直接从shell(./java.sh)运行时会有所不同,因为大多数shell都具有该情况的一些兼容性功能,因此如果exec*失败,它们将在shell中运行脚本。必须设置执行权限。

唯一不需要的情况是你将脚本作为shell的参数:bash java.sh

答案 1 :(得分:0)

您的第二种方法可以,但您的问题可能是您的Multicraft应用程序找不到您的脚本。更重要的是,您的Web服务器(Apache?)的环境可能需要修改PATH才能找到您的java包装器脚本。