1

そのため、Eclipse Mars (4.5) に更新しましたが、何らかの理由でデバッガーでホット スワップ コードを使用できません。通常、私は次のようなことができます:

public static void main(String[] args){
    while(true){
        System.out.println("123");
    }
}

次に、デバッグモードで起動し、テキストを「321」に変更して保存すると、再起動しなくても更新されます。「デバッグ」モードではなく「実行」モードで実行された場合とまったく同じように動作します。

私が試したこと:

  • 上記のコードを使用して、新しいワークスペースを作成し、新しいプロジェクトを作成しても、何も起こりません
  • 複数の JDK をインストールし、Java 6、7、および 8 を試し、異なる JDK を使用するようにワークスペースおよび/またはプロジェクト設定を変更しましたが、何も起こりません (Java の複数のバージョンがインストールされているという事実は問題ではありません。 eclipseを更新した瞬間、動作しなくなりました)
  • アンインストールしてEclipseへの構成ファイルを削除しようとしました(Macでは、〜/ Libraryフォルダーに「eclipse」という単語があるすべてのファイル/フォルダーになり、すべてのファイルを検出するために「検索」検索を実行しました)。次に、新しいワークスペースを作成しようとしましたが、プロジェクトになり、コードが切り取られ、デバッグモードで実行されましたが、保存しても何も起こりません。
  • また、「自動ビルド」が有効になっていることを確認し、「クリーン」にして自動ビルドを無効にし、コードを保存してから、デバッガーの実行中に手動ビルドを実行しました:何も起こりません

デバッグモードを利用できないと仕事を終わらせるのに苦労しているので、必死になり始めているので、正しい方向への助け/ヒントは大歓迎です。

4

2 に答える 2

1

わかりましたので、ようやく問題が見つかりました。実行中のループは編集できないようです。次のようなループがあるとします。

public static void main(String[] args){
    while(true){
        System.out.println("123");
    }
}

そうすると、「123」文字列を編集できなくなります。次のように、ループ内で呼び出されるメソッドを編集できます。

public static void main(String[] args){
    while(true){
        System.out.println(methodA());
    }
}

public static String methodA(){
    return "123";
}

これで、文字列「123」を編集して更新できます。これは無限の「for」ループにも適用されるため、経験則では、更新する前にメソッド本体を「再呼び出し」する必要があり、次のループ呼び出しを待つだけでは不十分であると推測されます。

于 2015-09-05T15:20:31.470 に答える