独立是Runtime.getRuntime()。exec()平台独立的吗?
Runtime.getRuntime().exec("cmd /c");
平台或我必须在参数传递平台特定的命令?
感谢
什么是Linux等价的命令cmd /c start /b java -jar
独立是Runtime.getRuntime()。exec()平台独立的吗?
Runtime.getRuntime().exec("cmd /c");
平台或我必须在参数传递平台特定的命令?
感谢
什么是Linux等价的命令cmd /c start /b java -jar
调用Runtime.getRuntime()。EXEC()是在这样的平台独立的,它会在每次启动外部可执行文件平台。当然,可执行文件本身必须存在,因此在Linux上启动notepad.exe很可能不起作用(除非安装了Wine和Notepad,但这是另一回事)。
在Windows上,输入任何要输入cmd.exe的内容(详情请参见下文)。但要做到在Windows自动路径查找,你需要做的是这样
Runtime.getRuntime().exec("start iexplore.exe");
或
Runtime.getRuntime().exec("start my.pdf");
其打开与关联的查看器PDF文件
。
在Linux上,你可以做任何事情,你会像猛砸壳做的,但你不能使用bash内建像管道运营商。您可以启动程序并传递参数。
在Linux上启动另一个Java实例,你可以使用:
Runtime.getRuntime().exec(new String[] {"java","-jar","myjar.jar"});
,如果它是不是在路径中使用绝对路径Java可执行文件。
感谢您的回复。你能告诉我什么是'cmd/c start/b java -jar jarfile.jar'的linux相当于 – 2012-02-22 16:23:25
添加了这个答案。 – Daniel 2012-02-22 16:27:17
它不是平台独立的。对于您所针对的每个操作环境,您需要一个外部命令版本。
Runtime.getRuntime().exec()
是独立平台。 cmd /c
是。你期望在Unix上运行cmd /c
?
所以,你如果你想运行外部命令的跨平台计划,以保持特定于平台的命令。
谢谢。 Linux中的cmd/c start/b java -jar相当于什么? – 2012-02-22 16:25:47
它取决于平台。引述relevant javadoc(重点矿山)的部分:
该cmdarray此方法检查是有效的操作系统命令。 哪些命令是有效的取决于系统,但至少该命令必须是非空字符串的非空列表。
当然不是,你正在执行一个shell命令。除非你没有其他更干净的方式来做你想做的事情,否则我不建议你像使用Java那样做。它违背了Java的便携性目的。
CMD是Windows命令....并不适用于其他操作系统 – VirtualTroll 2012-02-22 16:19:13
你觉得呢? Java不能提供映射表,因为它不可能在所有不同的OS之间进行映射。 – home 2012-02-22 16:19:39