1. ホーム
  2. java

[解決済み] Eclipse IDE における java.io.Console のサポート

2022-10-17 17:51:19

質問

私は、Eclipse IDE を使用して、Java プロジェクトを開発、コンパイル、および実行しています。今日、私は java.io.Console クラスを使用して、出力と、さらに重要なことですが、ユーザーの入力を管理しようとしています。

問題なのは System.console() が返す null アプリケーションをEclipseで実行した場合、quot;through" となります。Eclipse は、私たちがよく知っているコンソール ウィンドウのあるトップレベルのプロセスではなく、バックグラウンド プロセスでプログラムを実行します。

トップレベルのプロセスとしてプログラムを実行するようにEclipseを強制する方法、あるいは少なくともJVMが認識するコンソールを作成する方法はありますか?さもなければ、私はプロジェクトを jar でアップロードし、Eclipse の外部のコマンドライン環境で実行することを余儀なくされます。

どのように解決するのですか?

Eclipseからステップスルーデバッグを利用できるようにしたいとのことですが、どのようにすればよいのでしょうか。ビルドしたクラスをJREのクラスパスのbinディレクトリに設定することで、外部からクラスを実行すればよいのです。

java -cp workspace\p1\bin;workspace\p2\bin foo.Main

リモートデバッガを使用し、プロジェクトに組み込まれたクラスファイルを活用してデバッグすることができます。

この例では、Eclipseのプロジェクト構造は次のようになります。

workspace\project\
                 \.classpath
                 \.project
                 \debug.bat
                 \bin\Main.class
                 \src\Main.java

1. デバッグモードでJVMコンソールを起動する

debug.bat から外部で実行されるべき Windows のバッチファイルです。 cmd.exe コンソールから実行されます。

@ECHO OFF
SET A_PORT=8787
SET A_DBG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=%A_PORT%,server=y,suspend=y
java.exe %A_DBG% -cp .\bin Main

引数で、デバッグポートを 8787 . また suspend=y 引数は、デバッガがアタッチされるまで待つように JVM に指示します。

2. デバッグ起動コンフィギュレーションの作成

Eclipseで、Debugダイアログを開き(Run > Open Debug Dialog...)、新しい リモートJavaアプリケーション を作成し、以下の設定を行います。

  • プロジェクト あなたのプロジェクト名
  • 接続タイプ。 標準 (ソケット接続)
  • ホスト ローカルホスト
  • ポート 8787

3. デバッギング

つまり、アプリのデバッグをしたいときにいつでもできるのは

  • ブレーク ポイントを設定する
  • コンソールでバッチ ファイルを起動する
  • デバッグ設定を起動する

この問題を追跡するには バグ 122429 . アプリケーションでこの問題を回避するには、次のように抽象化レイヤーを使用します。 ここで .