Linux Runtime.getRuntime()。exec()与Linux无法正常工作

时间:2014-11-17 02:47:34

标签: java linux terminal

所以,我一直在用Java,Windows,Linux和Mac开发应用程序。它使用命令行应用程序来压缩/解压缩一些数据,当我尝试使它与wine一起工作时,我似乎没有运气,我也没有找到解决我所遇到的问题的任何问题。这就是我调用命令行的方式:

Runtime.getRuntime().exec(command).waitFor();

command是完成命令的字符串。以下是我尝试过的一些事情:

wine "/path/to/executable" "/path/to/argument"
/bin/bash -c wine "/path/to/executable" "/path/to/argument"
/bin/bash -c "wine "/path/to/executable" "/path/to/argument""
startx wine "/path/to/executable" "/path/to/argument"
startx /bin/bash -c wine "/path/to/executable" "/path/to/argument"
xterm -e wine "/path/to/executable" "/path/to/argument"
xterm -e /bin/bash -c wine "/path/to/executable" "/path/to/argument"

以上所有(除了startx)都可以在Linux终端上运行,而没有使用Java。在这一点上,我对于该做什么一无所知。我根本无法解决这个问题,我只是感到困惑。我对Linux也不是很熟悉,所以它只会增加更多的混乱。仅供参考,以下是我尝试运行第一个示例命令的示例:

Runtime.getRuntime().exec("wine \"/path/to/executable\" \"/path/to/argument\"").waitFor();
编辑:我发现我的问题是使用引号,删除它们允许我使用大多数上面的命令,但是我还需要确保支持带空格的路径。有任何想法吗? 我还转而使用ProcessBuilder,并制作了一个自定义解析器以满足我的需求。

2 个答案:

答案 0 :(得分:0)

试试这个我希望它适合你,

Runtime.getRuntime().exec("wine"+" /path/to/executable"+" /path/to/argument").waitFor();

答案 1 :(得分:0)

您也可以尝试:

Runtime.getRuntime().exec("/bin/sh" + "-c" + "wine \"/path/to/executable\" \"/path/to/argument\"").waitFor();