Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每次启动带有特定参数的Java_Java_Bash - Fatal编程技术网

每次启动带有特定参数的Java

每次启动带有特定参数的Java,java,bash,Java,Bash,我有一个程序,允许我定义java可执行文件(/usr/bin/java),但不允许我向可执行文件添加特定参数 我希望每次都能运行带有特定参数的Java,以便启用安全管理器 到目前为止,我已经尝试在/usr/bin/java之后添加参数,所以看起来 java=/usr/bin/java -Djava.security.manager -Djava.security.policy=/home/java.policy 这不起作用,因为程序可能会检查文件是否存在。我尝试的另一种方法是制作一个名为jav

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

我希望每次都能运行带有特定参数的Java,以便启用安全管理器

到目前为止,我已经尝试在
/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
(脚本的位置)。然而,这也不起作用。我有什么办法可以做到这一点吗


谢谢。

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

#!/bin/bash

/usr/bin/java -Djava.security.manager -Djava.security.policy=/home/java.policy $@
使用
chmodu+xjava.sh
更改权限,然后使用
java=./java.sh
调用程序(根据需要调整脚本的路径)

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

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


这两种方法都不需要的唯一情况是,将脚本作为shell的参数:
bash java.sh

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

“我有一个程序”什么程序?您是否尝试过
java=“/usr/bin/java-D…”“
(注意整个java命令周围的双引号)?您收到异常或shell错误消息?你能为你的问题添加准确的信息吗?@CeleStyga:是的,当调用没有父shell的脚本时,需要shebang和execute权限(我想你的Java程序调用类似于
execve()
的东西,而不是
system()
,后者会将调用传递给shell)。我加了一段话,有一些细节。