1
필자가하려는 것은 후속 명령을 성공적으로 실행하기 위해 필요한 준비 작업 (환경 변수 및 내용 설정)을 수행하는 배치 파일을 실행하는 것입니다. 이를 증명하기 위해 내가 함께 가공 Exec을상황에 맞는 실행을 위해 Commons Exec 사용하기
public class Tester {
public static void main(String[] args) throws Exception {
Tester tester = new Tester();
MyResultHandler handler = tester.new MyResultHandler();
CommandLine commandLine = CommandLine.parse("bash");
PipedOutputStream ps = new PipedOutputStream();
PipedInputStream is = new PipedInputStream(ps);
BufferedWriter os = new BufferedWriter(new OutputStreamWriter(ps));
Executor executor = new DefaultExecutor();
PumpStreamHandler ioh = new PumpStreamHandler(System.out, System.err, is);
executor.setStreamHandler(ioh);
ioh.start();
executor.execute(commandLine, handler);
os.write("export MY_VAR=test");
os.flush();
os.write("echo $MY_VAR");
os.flush();
os.close();
}
private class MyResultHandler extends DefaultExecuteResultHandler {
@Override
public void onProcessComplete(final int exitValue) {
super.onProcessComplete(exitValue);
System.out.println("\nsuccess");
}
@Override
public void onProcessFailed(final ExecuteException e) {
super.onProcessFailed(e);
e.printStackTrace();
}
}
}
를 사용하는 샘플을 넣어하지만 그 대신에 단어 "테스트"의 빈 문자열을 인쇄합니다. 모든 단서?