我想从 java 按钮单击执行批处理文件代码。此外,我不希望从 Java 代码中显示任何命令提示符窗口。我有一个代码:-C:\xyz-3.1.1\bin>dita --input=C:/Users/india/Desktop/mobile-phone/mobilePhone.xyz --format=pdf --output=C:/Users/india/Desktop --logfile=C:/Users/india/Desktop/dofhdif.txt所以我希望上面的代码从批处理命令运行, C:\xyz-3.1.1\bin>作为父目录。另外,每当我从 JFileChooser 中选择新文件时,我都想更新--input文件路径。我从按钮单击转换的 java 代码中做到了这一点:-ProcessBuilder pb=new ProcessBuilder("dita --input=C:/Users/india/Desktop/mobile-phone/mobilePhone.xyz --format=pdf --output=C:/Users/india/Desktop --logfile=C:/Users/india/Desktop/dofhdif.txt");pb.redirectErrorStream(true);Process process=pb.start();并收到 IOException 错误。我在这里卡了很长时间,我哪里出错了。编辑:-错误java.io.IOException: Cannot run program "dita --input=C:/Users/india/Desktop/mobile-phone/mobilePhone.xyz --format=pdf --output=C:/Users/india/Desktop --logfile=C:/Users/india/Desktop/dofhdif.txt": CreateProcess error=2, The system cannot find the file specified at java.lang.ProcessBuilder.start(Unknown Source)
2 回答
繁花如伊
TA贡献2012条经验 获得超12个赞
试试这个:
String inputFile = ...;
String outputFile = ...;
String logFile = ...;
ProcessBuilder pb = new ProcessBuilder(
"dita",
"--input=" + inputFile,
"--format=pdf",
"--output=" + outputFile,
"--logfile=" + logFile)
.directory(new File("C:\\xyz-3.1.1\\bin"))
//.inheritIO();
.redirectErrorStream(true);
Process process = pb.start();
这说明以下几点:
命令与参数分开
参数值可以在运行时确定
命令的默认目录 (
C:\xyz-3.1.1\bin
) 在启动进程之前设置如果您希望进程的输出显示为 Java 应用程序输出的一部分,请考虑使用
inheritIO()
代替redirectErrorStream()
。
添加回答
举报
0/150
提交
取消