Eclipse IDE-打开调用层次结构为空/已断开

Eclipse IDE-打开调用层次结构为空/已断开,eclipse,eclipse-juno,call-hierarchy,Eclipse,Eclipse Juno,Call Hierarchy,如果“开放调用层次结构”被破坏(项目中的每个方法都为空),我该怎么办?它只显示我想要查看其调用层次结构的方法的名称。我尝试的所有方法都会发生这种情况,即使它们都被其他方法调用 它对于代码导航非常有用。我不知道没有它怎么工作 我试过: 打开eclipse.exe-clean-refresh 重新启动Eclipse 关闭并重新打开项目 更新项目 重命名.metadata文件 我已经检查过它是否搜索整个工作区,并且没有打开任何筛选器。以下内容可能会有所帮助: 使用eclipse.exe-clean-

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

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

我试过:

  • 打开eclipse.exe-clean-refresh
  • 重新启动Eclipse
  • 关闭并重新打开项目
  • 更新项目
  • 重命名.metadata文件

  • 我已经检查过它是否搜索整个工作区,并且没有打开任何筛选器。

    以下内容可能会有所帮助:

    • 使用
      eclipse.exe-clean-refresh调用eclipse将强制eclipse重建索引。在那之后,这项功能又发挥了作用
    • 关闭并重新打开项目

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

    对于开普勒和PDT(PHP IDE),它至少在PDT 3.2.0和3.3.0中被破坏(尝试了两者)。修复程序在3.3.1中,我只需更新到3.3.1即可使调用层次结构重新工作


    (抱歉,我还不允许添加评论,不过这对很多人来说应该很方便)

    在我的情况下,我的工作区似乎被污染了

    打开/关闭项目并以clean开始未修复。我不得不开始一个新的工作空间


    软呢帽20,日食开普勒

    我也尝试了上面的建议,以及这里给出的提示:

    直到今天,当我发现我是一头驴子时,一切都没起作用。。。
    我曾经在“Call Hierarchy”(调用层次结构)视图中配置了一个过滤器,因此没有显示任何条目,因为已过滤掉。一旦我删除/禁用了过滤器,一切又正常了。

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

    我发现,签名为的方法存在一个bug:

    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)
    
    最后,它看起来像是这个版本中的一个bug:


    我假设,至少升级到4.4版(Luna)就能解决这个问题。

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

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

    如果调用层次结构没有打开,可能是因为项目没有作为java项目导入,而是显示在文件结构中。您可能希望通过以下方式启用项目方面:

    right click on the project -> project facet.  
    
    如果您没有看到列出的任何内容,您需要

    configure the project facet -> Apply -> ok. 
    
    有人说,当您针对这一问题访问时,您应该在市场上安装
    Java12支持


    当我安装它时,它再次正常工作

    尝试了这里所有的答案,但没有一个对我有效。后来我发现这是Eclipse2019-03()中的一个bug。尝试升级eclipse或安装更新的版本。
    对我来说,安装一个更新的版本(最新版本Eclipse 2019-09)解决了这个问题。

    我尝试了很多答案,所有答案都很好,它帮助了很多人,除了少数人,而我只有少数人

    我的eclipse版本是2019-03(4.11.0)
    。这是一个有错误的。可以通过附加组件修复


    转到Eclipse市场,搜索Eclipse 2019-03(4.11)的插件java 12支持并安装它。安装完成后,重新启动eclipse。希望这能解决问题。祝你度过愉快的一天。

    今天我遇到了这个问题,这个解决方案对我来说确实有效,版本:开普勒服务发行版1构建id:20130919-0819。我正在使用vrapper插件创造一种类似vim的编辑体验,发现在安装这个插件后,你必须在编辑器中突出显示整个函数名(双击它)然后它对我不起作用:Version:Luna Release(4.4.0)Build id:20140612-0600我还发现它在编辑器中不起作用,但在PHP浏览器中仍然起作用。这很烦人,但可行。谢谢。我的问题与此类似,只是出于某种原因,它将搜索范围更改为我的另一个项目。我将它设置为工作区,这就解决了问题。我也有类似的问题,但甚至是“donkier”。我没有创建任何项目,但这对我来说并不明显,因为我已经从另一台计算机迁移了代码,我有一个远程资源管理器,可以看到源文件,源代码树,甚至可以进行一些调试。。。但这一切都不意味着我已经创建了一个项目!我现在创建了一个项目。顺便说一句,我不得不等待很长一段时间,等待所有的
    DLTK索引
    发生。奇怪的是,我多次看到这个答案,并认为,“不可能。不是我。”但不知怎的,我之前设置的过滤器坏了。我以前设置它来过滤来自JUnits的所有调用,但现在不知何故它正在剥离实际调用。我想我必须调查一下那里发生了什么。对于较新版本的Eclipse,一切都重新运行了,没有安装
    Java12支持
    我让project facet本身仍然显示错误。。我已经把它作为一般项目导入了。。它会引起问题吗?