5

Eclipse でデバッグしているときに、デバッガーがクラッシュして「ソースが見つかりません」というエラー メッセージが表示されることがよくあります (その下に「ソース ルックアップ パスの編集」というテキストのボタンがあります)。この問題の説明/解決策を以前に Web で検索しましたが、何の助けにもなりませんでした。

ただし、私のケースで何が起こっているのかがわかりました。コードを 1 行ずつステップ実行し、実行中のコードのブロックからステップアウトすると、エラーが発生します。用語はわかりませんが、多くのアプリケーションは、現在コードが実行されていない時点で「スタンバイ モード」に入る可能性があると思います。1 つの例は、マウス クリックを待機しているグラフィカル アプリケーションです。私の場合、MouseListener メソッドのブレークポイントで停止し、それから (「スタンバイ モード」に) ステップ アウトすると、エラーが発生します。

この質問の最後に MWE を提供しました。行にブレークポイントを配置するとエラーが発生します

System.out.println("You clicked!");

F6 ("Step Over") を使用して行ごとにメソッドからステップアウトします。リスナーの最後の行で F6 ではなく F8 (「再開」) を押すと、デバッガーはクラッシュせず、すべて問題ありません。

私の質問は次のとおりです。この場合、Eclipse がクラッシュするほど深刻なことを行うのはなぜですか? 以下の例では、プログラム制御がリスナーを離れた後に「ステップする」と言える行がソース コードにないことは理解していますが、文句を言わずに「スタンバイ モード」に移行しないのはなぜですか? デバッグ セッションが頻繁に終了するのを防ぐために、このエラーを無効にすることはできますか? それとも、クラッシュの原因となる F6 の代わりに F8 を押すことを覚えておく必要がありますか?

package app;

import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;


public class TestFrame extends JFrame {
    public TestFrame() {
        getContentPane().setPreferredSize(new Dimension(200, 200));
        getContentPane().addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("You clicked!");
            }
        });
        pack();
    }

    public static void main(String[] args) {
        JFrame testFrame = new TestFrame();
        testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        testFrame.setVisible(true);
    }
}
4

3 に答える 3

23

Eclipseはクラッシュしません。*.javaEclipseがソース( )ファイルの場所を知らず、これについて通知するメソッドにステップインしようとしています。これが日食にどこを見るべきかを伝える方法です。に移動

Window-> Preferences-> Java-> Installed JREs、使用しているJREを選択し、をクリックしますEdit

そこで、表示されているリストからすべてのjarファイルを選択し、をクリックしますSource Attachment...

表示されるウィンドウで、JDKフォルダにあるfilleを選択しsrc.zipます(JDKのインストール中にチェックを外さなかった場合)。私が今使っているマシンでは、それは

C:\Program Files\Java\jdk1.7.0_07\src.zip

すべての変更を保存して(おそらくeclipseを再起動して)、そのエラーが再び表示されることはありません。

于 2013-02-16T19:34:26.267 に答える
4

ウィンドウ->設定->java->インストールされたjresに移動し、jreを削除してから、「追加」を実行して、JREではなくJDKを探します。

于 2013-02-16T19:28:31.000 に答える