Eclipse IDE - Open Call Hierarchy为空/已损坏

时间:2013-03-21 07:59:17

标签: eclipse eclipse-juno call-hierarchy

如果“打开调用层次结构”被破坏(项目中的每个方法都为空),我该怎么办?它只显示我想要查看调用层次结构的方法的名称。这种情况发生在我尝试的所有方法中,即使它们都被其他方法调用。

这对代码导航非常有用。我不知道没有它怎么工作!

我试过了:

  1. 打开eclipse.exe -clean -refresh
  2. 重启Eclipse
  3. 关闭并重新开启项目
  4. 更新项目
  5. 重命名.metadata文件
  6. 我已经检查过它搜索整个工作区,并且没有过滤器。

12 个答案:

答案 0 :(得分:33)

以下内容可能有所帮助:

  • eclipse.exe -clean -refresh调用eclipse迫使Eclipse重建索引。之后,该功能再次发挥作用。
  • 关闭并重新开放项目。

答案 1 :(得分:14)

我也尝试了上面的建议,以及这里给出的提示:http://mschrag.blogspot.co.at/2009/01/open-type-cant-find-your-class.html

直到今天,当我发现自己是驴子时,没有任何工作...... 我曾经在" Call Hierarchy"中配置了一个过滤器。视图,因此没有显示任何条目,因为过滤掉了。一旦我删除/禁用过滤器,一切都工作正常。

答案 2 :(得分:2)

有人问到eclipse bug report时,您应该在Java 12 support的Market位置上安装。
安装后,它又能正常工作

答案 3 :(得分:1)

此外,您可以尝试删除工作区并重新创建它。确保备份所有项目。

答案 4 :(得分:1)

对于Kepler和PDT(PHP IDE),它至少在PDT 3.2.0和3.3.0中被破解(两者都试过)。修复程序在3.3.1中,并且更新到那是我所要做的就是让调用层次结构再次运行。

(道歉,我还没有被允许添加评论,但这对许多人来说应该很方便)

答案 5 :(得分:1)

在我的情况下,我的工作空间似乎被污染了。

打开/关闭项目并从干净开始没有修复。我不得不开始一个新的工作区。

Fedora 20,Eclipse Kepler。

答案 6 :(得分:0)

我对eclipse Kepler(4.3.2)有相同的行为。

我发现,签名为:

的方法存在错误
void get(Object o)
Object get(Object o)

在eclipse 错误日志视图中,我发现以下异常:

java.lang.NullPointerException
    at org.eclipse.jdt.internal.core.search.matching.ClasspathSourceDirectory.directoryTable(ClasspathSourceDirectory.java:52)
    at org.eclipse.jdt.internal.core.search.matching.ClasspathSourceDirectory.findClass(ClasspathSourceDirectory.java:109)
    at org.eclipse.jdt.internal.core.search.matching.JavaSearchNameEnvironment.findClass(JavaSearchNameEnvironment.java:146)
    at org.eclipse.jdt.internal.core.search.matching.JavaSearchNameEnvironment.findType(JavaSearchNameEnvironment.java:185)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:145)
    at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:197)
    at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:2799)
    at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2556)
    at org.eclipse.jdt.internal.core.search.matching.MatchLocator.getType(MatchLocator.java:899)
    at org.eclipse.jdt.internal.core.search.matching.MatchLocator.getMethodBinding0(MatchLocator.java:955)
    at org.eclipse.jdt.internal.core.search.matching.MatchLocator.getMethodBinding(MatchLocator.java:907)
    at org.eclipse.jdt.internal.core.search.matching.MethodLocator.matchMethod(MethodLocator.java:327)
    at org.eclipse.jdt.internal.core.search.matching.MethodLocator.resolveLevel(MethodLocator.java:664)
    at org.eclipse.jdt.internal.core.search.matching.ClassFileMatchLocator.locateMatches(ClassFileMatchLocator.java:209)
    at org.eclipse.jdt.internal.core.search.matching.MatchLocator.process(MatchLocator.java:1699)
    at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1143)
    at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1184)
    at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1301)
    at org.eclipse.jdt.internal.core.search.JavaSearchParticipant.locateMatches(JavaSearchParticipant.java:95)
    at org.eclipse.jdt.internal.core.search.BasicSearchEngine.findMatches(BasicSearchEngine.java:231)
    at org.eclipse.jdt.internal.core.search.BasicSearchEngine.search(BasicSearchEngine.java:515)
    at org.eclipse.jdt.core.search.SearchEngine.search(SearchEngine.java:584)
    at org.eclipse.jdt.internal.corext.callhierarchy.CallerMethodWrapper.findChildren(CallerMethodWrapper.java:155)
    at org.eclipse.jdt.internal.corext.callhierarchy.MethodWrapper.performSearch(MethodWrapper.java:301)
    at org.eclipse.jdt.internal.corext.callhierarchy.MethodWrapper.doFindChildren(MethodWrapper.java:232)
    at org.eclipse.jdt.internal.corext.callhierarchy.MethodWrapper.getCalls(MethodWrapper.java:84)
    at org.eclipse.jdt.internal.ui.callhierarchy.DeferredMethodWrapper.getCalls(DeferredMethodWrapper.java:65)
    at org.eclipse.jdt.internal.ui.callhierarchy.DeferredMethodWrapper.fetchDeferredChildren(DeferredMethodWrapper.java:79)
    at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:235)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

最后,它看起来像这个版本中的一个错误:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=401272

我认为,至少升级到4.4版(Luna)将解决这个问题。

答案 7 :(得分:0)

在我的例子中,我试图在抽象类的派生类中获取方法的调用层次结构。请求的方法在基类中声明为abstract。 当我直接在抽象方法而不是实现的方法上打开调用层次结构时,一切都运行良好。 (Eclipse Neon)。

答案 8 :(得分:0)

我的问题是Open Call Hierarchy只搜索项目而不是整个Workspace。 因此,我必须在调用层次结构视图中单击小向下箭头(在右侧的调用层次结构视图窗口中;它是"查看菜单"箭头 - 指向下方的三角形),设置搜索范围>工作区。

答案 9 :(得分:0)

尝试了所有答案中的所有内容,但没有一个对我有用。后来我发现这是Eclipse 2019-03(https://bugs.eclipse.org/bugs/show_bug.cgi?id=545293)中的错误。尝试升级Eclipse或安装较新的版本。 对我来说,安装较新的版本(最新版本的Eclipse 2019-09)解决了这个问题。

答案 10 :(得分:0)

我尝试了很多答案,都很棒,它帮助了很多人,除了很少,而且我也很少。

我的日食版本为 2019-03(4.11.0)。这是一个错误。可以通过附加组件来解决。

转到Eclipse Marketplace,并搜索插件 java 12对Eclipse 2019-03(4.11)的支持…并安装它。安装完成后,重新启动Eclipse。希望这可以解决问题。祝你有美好的一天。

答案 11 :(得分:-1)

如果调用层次结构未打开,则可能是由于未将项目导入为Java项目,而是将其显示在文件结构中。您可能要通过以下方式启用项目构面:

right click on the project -> project facet.  

如果未列出任何内容,则需要

configure the project facet -> Apply -> ok.