Java Runtime.exec在Linux上遇到困难

大家好。 我正在开发一个Java程序,用于Linux环境,创build一个运行另一个Java类的新Java程序,但是我遇到了麻烦。 我终于解决了所有的问题。 调用

Runtime.getRuntime().exec(new String[] { "/bin/bash", "-c", "'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'" }) 

在我的Java程序中返回

 /bin/bash: /usr/lib/jvm/java-6-openjdk/jre/bin/java -classpath /home/kevin/workspace/Misc/bin HelloWorld: No such file or directory 

在stdout / stderr中。 如果我尝试

 Runtime.getRuntime().exec(new String[] { "/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'" }) 

我得到一个Javaexception

 Cannot run program "/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'": java.io.IOException: error=2, No such file or directory ... Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory 

最后,使用一个简单的

 Runtime.getRuntime().exec("/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'") 

给我一个

 -classpath: -c: line 0: unexpected EOF while looking for matching `'' -classpath: -c: line 1: syntax error: unexpected end of file 

从stdout / stderr。

同时,只用这个(在文件顶部没有#!/ bin / bash)创build一个新的一行.sh文件(并分配适当的权限)

 /bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld' 

给出正确的输出没有错误。

我知道Runtime.exec的用法相当复杂,我已经解决了一些很大的问题,但是这个问题只是让我困惑(比如Runtime.exec使用StringTokenizer搞砸了任何有空格的命令在他们,这就是为什么我调用接受string数组的重载)。 不过,我仍然遇到问题,我不明白为什么。

Solutions Collecting From Web of "Java Runtime.exec在Linux上遇到困难"