Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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 IOException冒险_Java_Linux_Ioexception_Shell - Fatal编程技术网

Java IOException冒险

Java IOException冒险,java,linux,ioexception,shell,Java,Linux,Ioexception,Shell,我让我的java进程(在我的系统中)尝试与一个shell脚本(details1.sh)对话,该脚本位于远程系统的/tmp目录中(当然这两个系统是连接的)。但我得到了这个例外- java.io.IOException:无法运行程序“/tmp/details1.sh”:java.io.IOException:错误=2,没有这样的文件或目录 我也将权限更改为777 但我不知道如何度过这一关。 有什么想法吗?您可能应该直接调用shell(例如,/bin/bash),将要执行的脚本作为文件名传递 编辑:根

我让我的java进程(在我的系统中)尝试与一个shell脚本(details1.sh)对话,该脚本位于远程系统的/tmp目录中(当然这两个系统是连接的)。但我得到了这个例外-

java.io.IOException:无法运行程序“/tmp/details1.sh”:java.io.IOException:错误=2,没有这样的文件或目录

我也将权限更改为777

但我不知道如何度过这一关。
有什么想法吗?

您可能应该直接调用shell(例如,
/bin/bash
),将要执行的脚本作为文件名传递

编辑:根据评论,这可能不是问题——但这肯定是我首先要尝试的


另一个编辑:您似乎试图运行
/tmp/details1.sh
,但您说它位于远程系统的
/tmp
目录中。显然,如果您尝试只运行
/tmp/details1.sh
,它将在本地
/tmp
目录中查找。。。您希望it部门如何了解远程系统?

您所说的
这两个系统已连接是什么意思?IOException命令可以告诉您在本地
/tmp
中找不到
details1.sh
。如果远程系统的根(
/
)安装在
/mount/remote\u sys
中,则应运行
/mount/remote\u sys/tmp/details1.sh
。在C和Linux中,stdlib的
system
函数使用
/bin/sh
调用该命令。当然,Java对于如何使用
Runtime.exec
运行命令并没有那么具体,但我希望与C中的情况一样。@jfgagne:老实说,我不确定我对这两种方式都有什么期望。。。但我认为至少值得一试。@jfgagne您没有证据证明Java调用system()。事实上,它调用了exec()家族中的一个。就像system()实际上一样。@EJP:True,我没有证据证明Java调用了
system()
。但是Linux人说,
system()
调用
/bin/sh-c
来执行它的命令。我没有Windoze手册,但我认为(正如Jon所说的,预期是误导性的)是使用
cmd
或另一个命令解释器来执行
system()
命令。虽然Linux
system()
可能使用了
fork()
/
exec()
/
wait()
,但在Linux中由
system()
的exec运行的二进制文件是
/bin/sh
。最后,Linux人说
exec
函数族是函数execve的前端,执行者说它的文件名必须是二进制文件或以
#开头的脚本