Java运行时或进程生成器或其他

时间:2015-08-30 23:25:17

标签: java runtime processbuilder

我想知道从Java运行命令行可执行文件的最佳选择。命令的目标平台是Windows 7(+)和Unix / Linux。

我有一个当前使用Runtime.exec()的类以及JavaWorld StreamGobbler文章中的增强功能。它在Windows和Unix上大约90%的时间都有效。另外10%的时间我需要扩展类,然后在命令前放置/ bin / sh的cmd.exe。在使用具有命令和参数的单个String以及将命令和args拆分为String []数组时,我也不得不喋喋不休。

我的最新消息是一个新的错误/异常“java.lang.IllegalArgumentException:可执行文件名已嵌入引号,拆分参数。”我当前的Runtime.exec()类在作为Java应用程序运行的Eclipse中运行良好,但是一旦我构建它并从实际的命令提示符运行,它就会因上述异常而失败。

所以现在我读到我们应该使用ProcessBuilder来为OS平台执行命令行可执行文件。

我的问题是,最好的选择是什么? Runtime.exec(),ProcessBuilder还是其他一些选项?是否有一个选项可以同时为Windows和Unix / Linux提供服务?如果没有,哪一个最适合Windows?哪一个最适合Unix / Linux?

tia,adym

1 个答案:

答案 0 :(得分:0)

不确定如何给予波希米亚信誉,但我使用了ProcessBuilder ......解决方案是:

Java - ProcessBuilder command arguments with spaces and double-quotes fails