在 Eclipse 中调试一个相对较小的程序时,我在逐步执行时看到“找不到源”错误。其他问题表明这通常是导入/jar 问题。在这种情况下,我没有导入的 jar 文件,没有什么花哨的,只有 src/default 包中的类。
具体行为是这样的:
如果调试器指向实例化新对象的行(例如,“Foo foo = new Foo();”),其中所讨论的类 Foo 位于相同的源目录中并且具有有效的构造函数,则为两个之一事情发生了:
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 构建路径的源选项卡中。如果上面建议的链接解释了这里发生的事情,即使阅读了三遍,我也没有看到它,如果有人用简短的文字向我解释,我将不胜感激。