My Java program is listening on standard input:
InputStreamReader isReader = new InputStreamReader(System.in);
BufferedReader bufReader = new BufferedReader(isReader);
while(true){
try {
String inputStr = null;
if((inputStr=bufReader.readLine()) != null) {
...
}
else {
System.out.println("inputStr is null");
}
}
catch (Exception e) {
...
}
}
Now, I want to pipe input to this program from bash. I tried the following:
echo "hi" | java -classpath ../src test.TestProgram
But it's just printing inputStr is null infinite times. What am I doing wrong?
Edit 1: Updated question to include more code / context.
Edit 2:
Looks like I'm experiencing the same issue as this OP: Command Line Pipe Input in Java
How can I fix the program so that I can pipe input in for testing, but running the program normally will allow users to enter input on standard input as well?
test.TestProgramyou're running is not the one you're compiling?Scannerinstead ofBufferedReader- I doubt it would make a difference though.