Konsoleneingabe ist in Windows CMD nicht sichtbar

DJLax5

Mitglied
Hallo zusammen!

Als erstes: Ich bin ein mittelmäßiger Java programmiere und studiere neben der normalen Schule Informatik (nein, meine Frage steht in keinem Zusammenhang mit dem Studium oder der Schule) und ich habe mich hier angemeldet, um anderen zu helfen und auf Lösungen zu kommen.

Nun zur Frage:
Ich habe ein Programm geschrieben was in Abhängigkeit von der Kamera etwas per RS232 raus schreibt. Funktioniert in Eclipse wunderbar. Ich habe jetzt das Programm exportiert und die Libs eingebunden. Wenn ich jetzt mittels einer Batch-Datei die *.jar ausführe funktioniert sie zwar, aber die Eingabe, die ich mache (z.B. start gui), wird im CMD Fenster nicht angezeigt. Aber wenn ich tippe und Enter drücke wird erst dann die Eingabe angezeigt. Ich hätte es aber gerne, dass ich auch sehe was ich tippe. Kennt jemand das Problem? Kann mir jemand helfen? Wäre cool!

Ich verwende dies um Text einzulesen:
Java:
		BufferedReader inputCommandLine = new BufferedReader(new InputStreamReader(System.in));		
		menuPos = ">";
		System.out.print(menuPos + " ");
Ich nutze Win7.
Danke für eure Antworten!

P.S. Ich brauche wegen der Kamera eine nicht-blockierende Eingabe Methode.
 
Hast du ein Testprogramm zum kompilieren um es selber auszuprobieren?

Hast du mal die Scanner-Klasse die extra dafür entworfen wurde ausprobiert?
Normalerweise sollte das aber so gehen wie in deinem Codeschnipsel erkennbar.
 
Zuletzt bearbeitet:
Also wenn ich dies hier als ausführbare *.jar Datei exportiere und per CMD starte, passiert das was ich meine.
Java:
 import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Test {
	static String menuPos = "";
	
	public static void main(String[] args) {
		
		BufferedReader inputCommandLine = new BufferedReader(new InputStreamReader(System.in));		
		menuPos = ">";
		System.out.print(menuPos + " ");
		
		while (true) {
			try {
				if (inputCommandLine.ready()) {
					String str = inputCommandLine.readLine();
					System.out.println(str);
					if (str.equals("exit")) {
						System.exit(1);
					}
					System.out.print(menuPos + " ");
				}
			} catch (IOException e) {
				// who cares ;-P
			}
		}
		
		
	}

}

Die Scanner-Klasse verwende ich normalerweise, aber soweit ich weiß blockiert das dann das System. Bitte korrigiert mich wenn ich mich irre.
 
Zuletzt bearbeitet:
Also habe das selbige Problem,
aber mit der Scanner-Klasse funktioniert das wunderbar.
Soweit ich das sehen kann verwendet Scanner keinen blocking I/O (wie BufferedReader) sondern einen Non Blocking I/O (CharBuffer).

An sich blockierst du mit dem Code von oben deinen Hauptthread schon alleine durch die Tatsache das du ihn in einer Endlosschleife laufen lässt mit while(true){}.
 
Zuletzt bearbeitet:
Ok danke!
Ja du hast natürlich recht. Dann ist meine Formulierung vielleicht nicht optimal.
Java:
 		Scanner inputCommandLine = new Scanner(System.in);		
		menuPos = ">";
		System.out.print(menuPos + " ");
		
		while (true) {
				if (inputCommandLine.hasNext()) {
					String str = inputCommandLine.nextLine();
					System.out.println(str);
					if (str.equals("exit")) {
						System.exit(1);
					}
					System.out.print(menuPos + " ");
				}
				System.out.println("j");
			
		}

Was ich möchte ist, dass auf der Konsole kontinuierlich ein "j" ausgegeben wird, welches bei der Scanner-Klasse nicht funktioniert, bei meiner ersten Methode schon. Auch nicht wenn inputCommandLine.hasNextLine() mache. Hast du eine Idee? Also es ist nicht elementar wichtig, dass man sieht was man eintippt aber wäre schon schön..

Danke für deine Hilfe!
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben