我正在尝试构建一个java进程,通过命令行执行产品。我已经编写了基于给定属性文件执行的进程。
buildRoot = isWindowsOs() ? "C:" + "\\Program Files (x86)\\DocuSign, Inc\\Retrieve 3.2" : "\\Program Files (x86)\\DocuSign, Inc\\Retrieve 3.2" ;
String[] command = new String [2];
command[0] = "\""+buildRoot+ "\\" + docuSignAppName+"\"";
logger.info(command[0].toString());
//ADDED FOR EXPLANATION - "C:\Program Files (x86)\DocuSign, Inc\Retrieve 3.2\DocuSignRetrieve.exe"
command[1] = arguments;
logger.info(command[1].toString());
ProcessBuilder processBuilder = new ProcessBuilder(command);
logger.info("ProcessBuilder starting directory" +processBuilder.directory());
processBuilder.redirectErrorStream(true);
p = processBuilder.start();
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
stdout = new BufferedReader(isr);一旦我传入构建出来的参数字符串,执行的代码看起来就像提供的样例,但是总是会导致错误返回到屏幕“缺失"accountid”参数“。
参数列表如下所示。
/endpoint "Demo" /userid "REMOVED" /password "REMOVED" /accountid "REMOVED" /span "-1" /spanfilter "Completed" /statusfilter "Completed" /fieldlog "LIST OF FIELDS" /nstyle "EnvelopeID" /save "MergedPdfWithoutCert" /dir "D:\DocuSignStore" /includeheaders "true" 如有任何帮助或协助,将不胜感激。
发布于 2014-11-13 00:48:53
这个解决方案是在StackOverflow关于与ProcessBuilder的共同问题的讨论中找到的。
我的问题是,我期望通过更改整个路径的放置,我可以运行可执行文件。因为我现在不确定的原因,这不像预期的那样有效。解决方案是运行CMD命令,该命令存在于任何windows操作系统的%PATH%上。
String[] command = new String [2];
command[0] = "\""+buildRoot+ "\\" + docuSignAppName+"\"";
logger.info(command[0].toString());
//ADDED FOR EXPLANATION - "C:\Program Files (x86)\DocuSign, Inc\Retrieve 3.2\DocuSignRetrieve.exe"
command[1] = arguments;
logger.info(command[1].toString());
//This starts a new command prompt
ProcessBuilder processBuilder = new ProcessBuilder("cmd","/c","DocusignRetreive.exe);
//This sets the directory to run the command prompt from
File newLoc = new File("C:/Program Files (x86)/DocuSign, Inc/Retrieve 3.2");
processBuilder.directory(newLoc);
logger.info("ProcessBuilder starting directory" +processBuilder.directory());
processBuilder.redirectErrorStream(true);
/*When the process builder starts the prompt looks like
*C:\Program Files (x86)\DocuSign, Inc\Retrieve 3.2
*Now DocusignRetrieve.exe is an executable in the directory to be run
*/
p = processBuilder.start();https://stackoverflow.com/questions/26849931
复制相似问题