Befehle an eine Konsolenanwendung senden?
Ich möchte etwas verifizieren, weil es in meinem Kopf Sinn macht, aber in Java funktioniert es nicht.
Ich versuche, eine andere Jar-Datei über meine Anwendung auszuführen. Ein Minecraft-Server, um genau zu sein. Ich habe alle Grundlagen unten (mitProcessBuilder
, mit Argumenten ausführen, auf einen Exit-Code warten usw.), aber eines kann ich nicht herausfinden. Senden von Befehlen an die Anwendung. Hier ein Teil von mirCommandLineSender
Klasse:
public class CommandLineSender extends Thread {
private BufferedWriter output;
private InputStream source; // Set to System.in when creating the object
private boolean stopRequested;
public CommandLineSender(Process sendTo, InputStream source) {
this.output = new BufferedWriter(new OutputStreamWriter(sendTo.getOutputStream()));
this.source = source;
System.out.println("Source InputStream initiated: " + source.toString());
this.stopRequested = false;
}
@Override
public void run() {
System.out.println("Run called.");
Scanner cmdScanner = new Scanner(source);
while (cmdScanner.hasNextLine() && !stopRequested) {
System.out.println("Has next line");
String msg = cmdScanner.nextLine();
write(msg);
System.out.println("Wrote: " + msg);
}
// Close the scanner and BufferedWriter
System.out.println("Closed.");
}
// Other various methods
protected void write(String msg) {
try {
output.write(msg);
} catch (IOException e) {
System.err.println("Unable to write message because of an unhandled IOException: " + e.getMessage());
}
}
Die Ausgabe, die ich erhalte, ist die folgende:
(Default Minecraft server output)
help // My command
Has next line
Wrote: help
Dies ist möglicherweise nicht wichtig, aber ich führe meinen Server mit den folgenden Argumenten aus:
java -Xmx1024M -Xms1024M -jar (path to server jar) nogui
Vielen Dank für Ihre Zeit.