実現したいこと・知りたいこと
- Eclipseでデバッグをする際に、標準入力を入力ファイルとして受け取り、そのままEOFまで取得したい
- 発生している現象は、他の方の環境で再現性があるのかどうか
前提
Eclipseにて標準入力を受けるプログラムをJavaで作成しています。デバッグにあたり、標準入力を事前に作成したファイルから与えられると便利です。
eclipseの機能として、標準入力をファイルから流す機能はあるようです。
デバッグボタンの隣の▼ボタン > デバッグの構成 > 共通タブ > 標準入出力 > コンソールに割り当てと入力ファイル にチェック
この方法を試したところ、後述のコードのscanner.nextLine();
にてプログラムは止まるようになりました。
想像するに、EOFを受け取ることができず、待機状態となっているものと思います。
コンソールからの入力であれば、正常にscanner.close()
へ遷移します。
上記のEclipseの設定にて、標準入出力をコンソールと入力ファイルの両方から入力を受け付けるようにし、scanner.nextLine()
での待機中にコンソールからCtrl-D
を押すと、正常にscanner.close()
へ遷移します。このとき、入力ファイルの内容がscannerによって読み取られていることを確認しています。ただこの回避策は不便ですので、わざわざコンソールで操作しなくとも、入力ファイルから標準入力を受け取り、処理が進んでほしいと思っています。
該当のソースコード
プログラムは次の通りです。
java
1package sample; 2 3import java.util.Scanner; 4 5public class Sample { 6 7 public static void main(String[] args) { 8 Scanner scanner = new Scanner(System.in); 9 String input = scanner.nextLine(); 10 scanner.close(); 11 12 System.out.println(input); 13 } 14}
標準入力としては画像のようにファイルを指定しています。ファイル内容は次のとおりです。
text
1Hello World!
補足情報(FW/ツールのバージョンなど)
- Ubuntu 20.04.6
- Eclipse 2023-03 (4.27.0)
- Java openjdk version "11.0.19" 2023-04-18

回答2件
あなたの回答
tips
プレビュー