Is
Runtime.getRuntime().exec("cmd /c");
这个命令是平台无关的吗?还是我需要在参数中传递特定于平台的命令?
谢谢
Linux 中相当于 cmd /c start /b java -jar
命令的是什么?
Is
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 shell相同的任何操作,但不能使用Bash内置的管道运算符。您只能启动程序并传递参数。
要在Linux上启动另一个Java实例,您可以使用以下命令:
Runtime.getRuntime().exec(new String[] {"java","-jar","myjar.jar"});
如果Java不在PATH中,请使用Java可执行文件的绝对路径。
cmd /c start /b java -jar jarfile.jar
在Linux下的等效命令吗? - Tapas Bose它不是平台无关的。你需要为每个你要针对的操作环境准备一个外部命令的版本。
Runtime.getRuntime().exec()
是跨平台的。但是 cmd /c
不是。如果你在 Unix 上运行 cmd /c
,你期望得到什么呢?
因此,如果你想要编写跨平台的程序来运行外部命令,你必须使用特定于平台的命令。
这是平台相关的。引用相关Javadoc的一部分(我强调):
此方法检查cmdarray是否为有效的操作系统命令。哪些命令是有效的取决于系统,但至少该命令必须是非空的非空字符串列表。