0

Eclipse で比較的小さなプログラムをデバッグしているときに、「ソースが見つかりません」というエラーが表示されます。他の質問では、これは通常、インポート/jar の問題であると述べられています。この場合、インポートされた jar ファイルはなく、特別なものはなく、src/default パッケージ内のクラスだけです。

具体的な動作は次のとおりです。

デバッガーが新しいオブジェクトをインスタンス化する行 (たとえば、「Foo foo = new Foo();」) を指している場合、問題のクラス Foo は同じソース ディレクトリにあり、有効なコンストラクターを持っています。2 つのうちの 1 つです。物事が起こります:

1) いずれか: F5 を押すと、クラスとコンストラクターの署名に移動します。続いて F5 キーを押すと、恐ろしい「ソースが見つかりません」というエラーが表示されます。

2) または: F5 キーを押すと、すぐに「ソースが見つかりません」というエラーが表示されます。

どちらの場合でも、デバッグを続行できます....一種の。たとえば、デバッグ セッションが続行され、ステップを進めると、プログラムの次のステップに進みます。(デバッガーなしでこのプログラムを実行した場合、またはそれらの場所にブレークポイントがない場合、問題は見られません。F8 を押して次のブレークポイントに移動すると、通常、問題は発生しません。)

Java ビルド パスのソースが正しく設定されている (プロジェクトの src サブディレクトリで、デフォルト パッケージが存在する場所)。Java ビルド パス ライブラリには JRE システム ライブラリしかなく、私の知る限り、名前の衝突はありません. Java ビルド パスに対して他に行う必要があることは考えられません。

これはおそらく、デバッガーで探しているバグ (数値アプリケーションでの NaN の増殖) とは関係ありませんが、気を散らし、問題の根本に到達する能力を妨げています。

具体的な質問: この動作の原因は何ですか? それとも、これまで気付かなかった予期された動作ですか?

編集:コードを含む

Loop2:  for (int depth = 0; depth < maxDepth; depth++) {
        for (int node = 0; node < policy.numMemory; node++) {
            Belief belief = new Belief(messages, node);
            nodeTraces[node] = new nodeTrace(policy, pomdp, messages, belief, depth);
            if (nodeTraces[node].bestGain > bestGain) {bestTrace = node; bestGain = nodeTraces[node].bestGain; }
        }
        if (bestGain > 0.01) { System.out.println("breaking"); break Loop2; }
    }

上記でブレークポイントを設定し、Belief belief = new Belief(messages, node);F5 キーを押すと、デバッガーに Source Not Found メッセージが表示されます。そのクラスのコード スニペットは次のとおりです。

public class Belief {

int numStates;
double[] belief;

public Belief(Messages messages, int node) {
    // do some stuff
}

このプロジェクトのどこにもパッケージが含まれていないことを再度強調します。すべてのクラスは私のものであり、Java ビルド パスのソース タブに含まれるプロジェクト独自のソース ディレクトリにあります。上記の提案されたリンクがここで何が起こっているかを説明している場合、3回読んだ後でもそれを見ていないだけです.

4

1 に答える 1

0

Eclipse には、標準ライブラリのソース、つまり JDK が含まれていない可能性があります。

これは Preferences -> Java -> Installed JRE で設定できます。

于 2013-10-13T22:43:48.130 に答える