Eclipse中的错误? org.eclipse.jdt.internal.compiler.lookup.ArrayBinding无法强制转换为org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding

时间:2014-04-30 16:42:29

标签: java eclipse

以下明显错误的代码(受@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中的错误吗?如果是这样,报告它的最佳位置是什么?

另外(为了使这个问题对遇到同样问题的人有用),是否有一种很好的方法可以找到这样的构建错误的来源,如果它被隐藏在代码的深处?我从错误消息中获得的唯一信息是对话框详细信息中的项目名称,如果项目存在许多其他问题(例如,接管其他人的工作),这可能不会太有用。还有其他地方,我可以在哪里找到有关此错误的确切位置的更多信息,比如至少是文件名吗?

3 个答案:

答案 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消失。

然后我将其粘贴回去。