下面给出的代码实际上尝试运行命令。从命令提示符运行时,此命令会生成必要的输出。但是当我尝试从java代码运行应用程序时,它会继续运行并且不会生成任何输出文件。
String arg[]={"C:\\app1.exe", "C:\\app2.exe", "c:\\app3.exe"};
String pwd[]={"123","-x","-sf"};
String outputfile="c:\\output.xml"
String command=arg[0]+pwd[0]+arg[1]+pwd[1]+arg[2]+pwd[2]+output;
Process pr=rt.exec(command);
答案 0 :(得分:2)
String command=arg[0]+pwd[0]+arg[1]+pwd[1]+arg[2]+pwd[3]+output;
至少你错过了参数之间的空格!
答案 1 :(得分:1)
您不应将所有参数连接到一个字符串。相反,将它们作为单独的参数传递给
处理exec(java.lang.String [])
答案 2 :(得分:0)
尝试:
String[] command = new String[] { arg[0], pwd[0], arg[1], pwd[1],
arg[2], pwd[2], output };
这假设您要运行的命令是
C:\app1.exe 123 C:\app2.exe -x C:\app3.exe -sf c:\output.xml
如果您真的想要运行三个单独的命令,则必须多次运行exec()
。
有关详细信息,请参阅http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Runtime.html#exec(java.lang.String[])处的javadoc。
编辑:正如另一位回答者指出的那样,没有pwd[3]
!
答案 3 :(得分:0)
我认为你在生成命令时犯了错误。
这将是
C:\\app1.exe123C:\\app2.exe-xc:\\app3.exe-sfc:\\output.xml
确保space
并使用此exec(String[]
答案 4 :(得分:0)
我的猜测是你没有在调试器中试过它或打印它试图运行的内容。
我的猜测是,当你进行编译时,你没有一个叫做的命令。
C:\app1.exe123C:\app2.exe-xc:\app3.exe-sfc:\output.xml
路径中不能有多个:
。
答案 5 :(得分:0)
您连接所有命令和参数,但不要在命令和参数之间插入空格。 所以你的命令看起来像这样:“C:\ app1.exe123C:\ app2.exe-xc:\ app3.exe -sfc:\ output.xml” 并且pwd [3]也不存在。你有一个包含3个元素的数组,所以最高元素是pwd [2]。你应该在这里得到和ArrayIndexOutOfBoundsException(或者它只是一个复制粘贴错误)?
答案 6 :(得分:0)
代码有几个问题:
命令和参数之间需要一个空格,pwd [3]超出范围。我运行了这段代码,但它确实有用。
String arg[]={"C:\\app1.exe", "C:\\app2.exe", "c:\\app3.exe"};
String pwd[]={" 123"," -x"," -sf"};
String outputfile="c:\\output.xml";
String command=arg[0]+pwd[0]+arg[1]+pwd[1]+arg[2]+pwd[2]+outputfile;
try {
Process pr=Runtime.getRuntime().exec(command);
} catch (IOException e) {
e.printStackTrace();
}
答案 7 :(得分:0)
如果您的应用程序“app1”,“app2”...是从命令提示符运行的,则需要先打开它。 首先启动cmd.exe。 然后正如其他人建议在app和参数之间添加空格。
尝试在windows中的运行/搜索输入字段中粘贴它:
cmd.exe / K C:\ app1.exe 123 C:\ app2.exe -x c:\ app3.exe -sf c:\ output.xml
cmd.exe / K在执行命令后保持propmt打开