我试图通过命令行构建一个java进程来执行docusign检索产品。我已根据给定的属性文件编写了要执行的进程。
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"参数&#34 ;.
参数列表如下所示 / endpoint" Demo" / userid" REMOVED" / password" REMOVED" / accountid" REMOVED" / span" -1" / spanfilter"已完成" / statusfilter"已完成" / fieldlog" FIELDS" / nstyle" EnvelopeID" / save" MergedPdfWithoutCert" / dir" D:\ DocuSignStore" / includeheaders" true"
任何帮助或帮助都将不胜感激。
答案 0 :(得分:1)
解决方案是在关于ProcessBuilder的常见问题的StackOverflow讨论中找到的。
我的问题是我希望通过更改完整路径中的put,我可以运行可执行文件。由于我现在不确定的原因,它没有按预期工作。解决方案是运行任何Windows操作系统上%PATH%上存在的CMD命令。
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();