NetBeans を使用して GUI を作成しています。GUI のボタンの 1 つで、powershell スクリプトを使用する必要があります。スクリプトの出力を取得して、GUI 内の JTextArea に配置しようとしています。これが私がこれまでに持っているものです。少しデバッグを行ったところ、while ループ内でハングしているように見えますが、なぜそうしているのか混乱しています。
private void runButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("cmd powershell C:/hello1.ps1");
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader reader = new BufferedReader(isr);
String line;
while ((line = reader.readLine()) != null) {
outputTextArea.setText(line);
}
reader.close();
proc.getOutputStream().close();
} catch (IOException ex) {
Logger.getLogger(BatchFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
そして、これを機能させようとしている簡単なpowershellスクリプトを次に示します。
#Filename: hello1.ps1
Write-Host "Hello World!"
#End of Script
私はいくつかの調査を行い、他の人がハングしていることに気付きましたが、それはプロセスの出力ストリームを閉じるのを忘れたからです。