Ada*_*ler 0 java parameters runtime process
我正在为命令行应用程序做一个前端.它有一个很长的命令行是这样的:
public String liveShellCommand(){
String cmd="command mode --parameter arg --parameter2 arg2 --parameter3 arg3";
Runtime run = Runtime.getRuntime() ;
Process pr ;
try {
log.progress("sending command: " +cmd);
pr = run.exec( cmd );
pr.waitFor() ;
Run Code Online (Sandbox Code Playgroud)
在我将"模式"开关添加到其中之前,一切似乎都有效."mode"开关从命令行执行.我尝试了一些组合将参数拆分成一个不执行的数组.我认为它与"模式"有关 - 没有 - 在它前面,它不能有 - 在它面前.
我究竟做错了什么?
编辑:我忘了提到我所能看到的就是:调试器停止在无法编译的源代码上.我正在使用netbeans,它似乎没有打印出堆栈跟踪.它在run.exec(cmd)上停止.java有什么问题吗?
我能够使用ProcessBuilder来运行它,而不仅仅是失败...
它解析"命令"就好了,但当我添加"命令模式"时
java.io.IOException: Cannot run program "command mode": java.io.IOException: error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)
所以它无法解析我猜.
小智 6
+1用于通过数组发送参数.
通过字符串发送所有内容可能在某些系统上有效但在其他系统上失败.
Process start = Runtime.getRuntime().exec(new String[]
{ "java", "-version" });
BufferedReader r = new BufferedReader(
new InputStreamReader(start.getErrorStream()));
String line = null;
while ((line = r.readLine()) != null)
{
System.out.println(line);
}
Run Code Online (Sandbox Code Playgroud)
我知道你已经说过你尝试通过一系列字符串发送参数但没有成功,但是你收到了不同类型的错误吗?如果其他程序有日志,您可能想看看出了什么问题.您可以编写一个简单的脚本,输出调用它的参数来测试实际发生的事情.
| 归档时间: |
|
| 查看次数: |
14523 次 |
| 最近记录: |