낭만 프로그래머

apache.commons.exec 라이브러리 사용하기 본문

Java/Common

apache.commons.exec 라이브러리 사용하기

조영래 2017. 4. 6. 18:03

apache.commons.exec : 외부 실행 파일을 간편하게 실행하게 해주는 라이브러리


1. 라이브러리 다운로드

  1.1. https://commons.apache.org/proper/commons-exec/ 접속하여 Download 클릭


  1.2. commons-exec.1.3.bin.zip 클릭하여 다운로드


2. 예제

  2.1. 아크로뱃을 실행

 String line = "AcroRd32.exe /p /h " + file.getAbsolutePath();

 CommandLine cmdLine = CommandLine.parse(line);

 DefaultExecutor executor = new DefaultExecutor();

 executor.setExitValue(1);

 int exitValue = executor.execute(cmdLine);


  2.2. Watchdog 이용

 String line = "AcroRd32.exe /p /h \"" + file.getAbsolutePath() + "\"";

 CommandLine cmdLine = CommandLine.parse(line);

 DefaultExecutor executor = new DefaultExecutor();

 executor.setExitValue(1);

 ExecuteWatchdog watchdog = new ExecuteWatchdog(60000);

 executor.setWatchdog(watchdog);

 int exitValue = executor.execute(cmdLine);


  2.3. CommandLine Build 이용

 Map map = new HashMap();

 map.put("file", new File("invoice.pdf"));

 CommandLine cmdLine = new CommandLine("AcroRd32.exe");

 cmdLine.addArgument("/p");

 cmdLine.addArgument("/h");

 cmdLine.addArgument("${file}");

 cmdLine.setSubstitutionMap(map);

 DefaultExecutor executor = new DefaultExecutor();

 executor.setExitValue(1);

 ExecuteWatchdog watchdog = new ExecuteWatchdog(60000);

 executor.setWatchdog(watchdog);

 int exitValue = executor.execute(cmdLine);


  2.4. 비동기적으로 실행

 CommandLine cmdLine = new CommandLine("AcroRd32.exe");

 cmdLine.addArgument("/p");

 cmdLine.addArgument("/h");

 cmdLine.addArgument("${file}");

 HashMap map = new HashMap();

 map.put("file", new File("invoice.pdf"));

 commandLine.setSubstitutionMap(map);


 DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();


 ExecuteWatchdog watchdog = new ExecuteWatchdog(60*1000);

 Executor executor = new DefaultExecutor();

 executor.setExitValue(1);

 executor.setWatchdog(watchdog);

 executor.execute(cmdLine, resultHandler);


 // some time later the result handler callback was invoked so we

 // can safely request the exit value

 int exitValue = resultHandler.waitFor();