'da apache.commons.exec komutunu kullanarak parametrelerle kabuk komut dosyası yürütme Çalıştırmak için java yaklaşımı kullanılarak uygulanan apache-commons-exec komutunu kullanarak bir komut dosyası çalıştırmaya çalışıyorum. Bu betik, üretim sunucusunda (Linux) yürütülür, ancak her şeyin yolunda olduğunu görmek için yerel ana bilgisayarımda test etmem gerekir. İşte Windows
cygwin başlatmak için benim kodudur ve bu kodun cmd.exe çalışıyor ama commons.exec kullanarak uygulamayı başlatmaya çalıştığınızda çalışmıyor:OutputStream outputStream = new ByteArrayOutputStream();
DefaultExecutor exec = new DefaultExecutor();
exec.setWatchdog(new ExecuteWatchdog(1000));
PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream);
exec.setStreamHandler(streamHandler);
CommandLine cmdLine = CommandLine.parse("C:\\cygwin64\\bin\\bash");
cmdLine.addArgument("-c");
cmdLine.addArgument("/cygdrive/c/dev/launch.sh");
int exit = exec.execute(cmdLine);
logger.warn("Job exit: " + exit);
O döndürür 1 ve hiçbir çıkış veya günlük hatası:
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
Çıkışı düzgün şekilde nasıl yakalayabilirim?
... Linux ortamında test edin. Eğer bash komut dosyası bir # bang/#/bin/bash ve yapışkan uid bit chmod s + u olabilir. (Windows cygwin ortamı bash --login -i ile başlatılır) –
Mümkün değil. – mannuk