日期:2014-05-20  浏览次数:20856 次

java 调用其他程序,并传递参数
情况是这样的:
1.一套软件,是个转换格式的软件,阿帕比的ApaMaker.exe 双击打开有选择要转换的文件,然后他会转换成*.cebx文件
我用这个方法调用的
Java code

Runtime run = Runtime.getRuntime();
        try {
        run.exec("\"C:\\Program Files\\Founder\\Apabi Maker 5.0\\Bin\\ApaMaker.exe \" -file \"D:\\TEMP\\2.CEB \" \"D:\\TEMP\\2.CEBX\"");


程序是可以启动的,但是也只是启动而已,他没得到要转换的路径这个参数,咋个传递呢? 是不是要知道ApaMaker.exe内部的代码?
2.这个在j2ee项目中,客服端调用服务器端的ApaMaker.exe,又该如何操作?

 望各位大大们指点下我吧.. 万分感谢

------解决方案--------------------
ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\Founder\\Apabi Maker 5.0\\Bin\\ApaMaker.exe", "-file", "D:\\TEMP\\2.CEB\\", "D:\\TEMP\\2.CEBX\\");
Process p = pb.start();
int exitCode = p.waitFor();


------解决方案--------------------
你确定那个软件本身支持传递参数?
------解决方案--------------------
改一下俺刚才贴的代码, 应该是:

ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\Founder\\Apabi Maker 5.0\\Bin\\ApaMaker.exe", "-file", "D:\\TEMP\\2.CEB", "D:\\TEMP\\2.CEBX");
Process p = pb.start();
int exitCode = p.waitFor();

每个参数中间可以有空格, 不需要用引号,免得头晕, 呵呵



LZ 也可以试试这段程序, 显示 c:\ 文件

Java code

ProcessBuilder pb = new ProcessBuilder("dir", "c:\\");
Process p = pb.start();
InputStreamReader is = new InputStreamReader(p.getInputStream());
int c;
while( (c=is.read())!=-1) {
    System.out.print((char)c);
}
int exitCode = p.waitFor();
System.out.println(exitCode);

------解决方案--------------------
俺先是在linux下运行,windows 的确有点不同阿, LZ, 再试试这个,
这个应该可以传参数

ProcessBuilder pb = new ProcessBuilder("notepad", "c:/1.txt");


------解决方案--------------------
2种参数(Runtime.exec, ProcessBuilder) 传递方式都可以,
有可能就像楼上 dxqrr 所说,需要确定ApaMaker.exe 需要的参数

------解决方案--------------------
这个软件有他自己的转换方法的,应该看下技术说明文档。其他系统调用的时候不太可能还打开这个转换工具。而且这个转换的方法一般是在页面调JS就可以实现。
------解决方案--------------------
参数不对,可以问下给你程序的人,参数怎么传递,也可以google 下 程序的参数