aşağıdaki şekilde sürecinin başlatılması ediyorum.Yönlendirme I/Java alt sürecin Ç (neden ProcessBuilder.inheritIO() çalışmıyor?)
try {
final Process mvnProcess = new ProcessBuilder("cmd", "/c", "mvn", "--version")
.directory(new File(System.getProperty("user.dir")))
.inheritIO()
.start();
System.exit(mvnProcess.waitFor());
} catch (final IOException ex) {
System.err.format(IO_EXCEPTION);
System.exit(1);
} catch (final InterruptedException ex) {
System.err.format(INTERRUPTED_EXCEPTION);
System.exit(1);
}
ben konsolda alt sürecin çıkışını bekliyordum inheritIO()
çağırmak, ama hiçbir şey göründüğü beri. Burada neyi özlüyorum?
Düzenleme: Ben bir döngüde konsolunun (veya defa) bunu yazma, ben mvnProcess.getInputStream()
kullanmak ve açıkça sürecin çıkışını okuyabilir biliyoruz. Ancak bu çözümü sevmiyorum, çünkü döngü iş parçamı engelleyecektir. inheritIO()
umut verici görünüyordu, ama görünüşe göre nasıl çalıştığını anlamıyorum. Birinin burada biraz ışık tutacağını umuyordum.
Eğer cmd.exe dosyasında 'mvn --version> somefile.txt' yazarsanız ne olur? – ARRG
@ARRG ben [zaman Runtime.exec() olmaz] (http://www.javaworld.com ait * Tüm * önerileri) bir Maven'ın sürüm bilgileri – Rinke
1 ile somefile.txt adlı dosyayı) Read olsun (ve uygulamak /jw-12-2000/jw-1229-traps.html). Bu sorunu çözebilir. Aksi takdirde, başarısızlık nedeni ile ilgili daha fazla bilgi sağlamalıdır. Daha sonra, 'Process' ve 'ProcessBuilder' kullanarak 'Process' oluşturmaya atıfta bulunduğunu dikkate almayın. 2) "catch (Exception e) {.." formunun "catch" (Exception e) {e.printStackTrace(); // çok bilgilendirici! .. ' –