所以,我一直在用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
,并制作了一个自定义解析器以满足我的需求。
答案 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();