2014-11-10 3 views
0

명령 행을 통해 docusign 검색 제품을 실행하기 위해 Java 프로세스를 빌드하려고합니다. 주어진 속성 파일을 기반으로 실행하는 프로세스를 작성했습니다. 내가 매개 변수의 밖으로 내장 된 문자열을 전달하면Docusign ProcessBuilder를 통해 검색

 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); 

는 실행 코드가 제공되는 샘플처럼 보이지만 항상 다시 화면 계정 아이디 "매개 변수"를 "없음"에 오류가 발생합니다.

매개 변수 목록은 다음과 같습니다. OF
/엔드 포인트 "데모" "제거됨" /사용자 ID "완료", "삭제 된 ' /암호 /스팬"완료 ","-1 " /spanfilter /statusfilter'삭제 ' /계정 아이디 /fieldlog"LIST \ DocuSignStore " /includeheaders"true "로

어떤 도움 또는 도움을 주시면 감사하겠습니다 : FIELDS" /nstyle "는" 이/저장 "MergedPdfWithoutCert" /DIR "D하는 것은 EnvelopeID.

+0

전달중인 사용자와 관련된 올바른 'accountid'를 입력 했습니까? 또한 'accountid'로 5 자리 계정 ID 또는 32 자리 API GUID를 입력 하시겠습니까? – Ergin

+0

예를 들어 명령 줄 스크립트 작성기에 지정된대로 32 자리 accountid 및 사용자 ID를 사용합니다. 내 문제는 내가 프로세스 빌더를 코딩하는 방식이었다. – KcBrewRon

+0

당신은 지역 사회의 이익을 위해 어떻게 당신이 결심했는지를 게시하고 똑같은 문제를 겪을 수있는 사람들을 도울 것입니다 ... – Ergin

답변

1

이 솔루션은 ProcessBuilder의 일반적인 문제에 대한 StackOverflow 토론에서 발견되었습니다.

내 문제는 전체 경로에서 퍼팅을 변경하여 실행 파일을 실행할 수 있다고 예상했기 때문입니다. 지금 당장 확신 할 수없는 이유로 예상대로 작동하지 않았습니다. 해결책은 모든 Windows OS의 % 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(); 
관련 문제