Führen Sie processbuilder und in ein-und Ausgang
Ich versuche, mein Programm zu starten Zauberer SSH in meinen server, aber kann nicht scheinen, um herauszufinden, wie man in und Ausgang zu gehen, um stdin
und stdout
oder irgendwo für diese Angelegenheit. Bekomme ich nur eine leere output-Fenster von Netbeans. Wie bekomme ich die Jar ausführen, und Eingabe/Ausgabe?
public class openShell {
public void openShell() throws IOException {
String line;
Scanner scan = new Scanner(System.in);
ProcessBuilder builder = new ProcessBuilder ("C:\\Program Files\\Java\\lib\\enchanter-beanshell-0.6.jar", "myscript.bsh");
builder.redirectErrorStream(true);
Process process = builder.start();
OutputStream stdin = process.getOutputStream ();
InputStream stderr = process.getErrorStream ();
InputStream stdout = process.getInputStream ();
BufferedReader reader = new BufferedReader (new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
while (scan.hasNext()) {
String input = scan.nextLine();
if (input.trim().equals("exit")) {
//Putting 'exit' amongst the echo --EOF--s below doesn't work.
writer.write("exit\n");
} else {
writer.write("((" + input + ") && echo --EOF--) || echo --EOF--\n");
}
writer.flush();
line = reader.readLine();
while (line != null && ! line.trim().equals("--EOF--")) {
System.out.println ("Stdout: " + line);
line = reader.readLine();
}
if (line == null) {
break;
}
}
}
}
private void LaunchButtonActionPerformed(ActionEvent evt) {
//openShell open = new openShell(); //RUNS BUT NO IN OR OUTPUT
//BELOW CODE IS FOR TESTING, JUST TRYING TO GET PROCESSBUILDER TO CONNECT
//TO MY JAR
try {
ProcessBuilder builder = new ProcessBuilder(
"Java -jar C:\\Program Files\\Java\\lib\\enchanter-beanshell-0.6.jar");
builder.redirectErrorStream(true);
Process process = builder.start();
} catch (IOException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
- Benutzt du Java 6 oder 7? Die ProcessBuilder-API ist auch viel besser in Java 7.
- Ich bin mit 7. Edit hinzufügen openShell Klasse.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Methode
ProcessBuilder.inheritIO
leitet den Befehl streams in Ihrem stdin, stdout und stderr. Dies gilt für Java 7.Beginnen mit dem Aufbrechen der Argumente wie oben. Dann alle Empfehlungen umsetzen von Wenn Laufzeit.exec() nicht.
Methoden
Process.getInputStream
undProcess.getOutputStream
erhalten Sie streams, die können Sie dann Lesen und schreiben.