以下明显错误的代码(受@dexter's answer to a question of mine启发):
Class<? extends Exception>[] exceptions;
try {
// some stuff here
} catch (exceptions[0] e) {
// some more stuff here
}
导致Eclipse经常弹出一个标题为“Problem Occurred”的对话框,其中包含以下消息:
'Building workspace' has encountered a problem.
Errors occurred during the build.
该对话框提供以下“详细信息”:
Errors occurred during the build.
Errors running builder 'Java Builder' on project 'test'.
org.eclipse.jdt.internal.compiler.lookup.ArrayBinding cannot be cast to
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding
Eclipse确实在exceptions[0]
下放置了红色曲线,但是如果我将鼠标悬停在它们上面,它就没有任何与之相关的错误。相反,它也会在边距的最顶部放置一个红色(x),并将文件中第一行的第一个字母(p
中的package ...
)弄曲,如果我将鼠标悬停在该位置上,我明白了:
Internal compiler error: java.lang.ClassCastException:
org.eclipse.jdt.internal.compiler.lookup.ArrayBinding cannot be cast to
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding at
org.eclipse.jdt.internal.compiler.ast.TryStatement.verifyDuplicationAndOrder
(TryStatement.java:1191)
这是Eclipse中的错误吗?如果是这样,报告它的最佳位置是什么?
另外(为了使这个问题对遇到同样问题的人有用),是否有一种很好的方法可以找到这样的构建错误的来源,如果它被隐藏在代码的深处?我从错误消息中获得的唯一信息是对话框详细信息中的项目名称,如果项目存在许多其他问题(例如,接管其他人的工作),这可能不会太有用。还有其他地方,我可以在哪里找到有关此错误的确切位置的更多信息,比如至少是文件名吗?
答案 0 :(得分:3)
是的,它看起来像是你会在https://bugs.eclipse.org/bugs/报告的Eclipse错误 查看现有错误,此类强制转换错误已发生,但此错误没有打开错误。
查看jdt
插件有很多可以打开的调试选项,我不确定哪些在这里有用。
答案 1 :(得分:1)
帮助遇到此问题并且无法追查原因的其他人的部分答案:
在Eclipse中,通过“Window - &gt; Show View - &gt; Problems”打开“Problems”视图。展开视图中的“错误”部分。此列表包含当前属于构建过程的所有项目中发现的所有错误。
列表中的大多数错误都会有一个灯泡,角落里有一个小红色[x]作为图标。有些人会有一个大红色(x)。其中一个大红色(x)会说“内部编译器错误:......”。如果双击该条目,则会转到导致错误的文件。
在我的例子中,“错误”-list包含第二个条目,在标记为“内部编译器错误:...”之后,右边有一个大的红色(x)。那个是导致错误的实际问题,所以双击它不仅会打开正确的文件,还会跳转到有问题的位置。 (不确定第二个条目是否总是在那里,但是......)
答案 2 :(得分:1)
这是个把戏:
就我而言,该错误在一个文件user.java
上标记了X
所以我打开文件,突出显示所有内容并将其剪切,然后保存以使X消失。
然后我将其粘贴回去。