如果“打开调用层次结构”被破坏(项目中的每个方法都为空),我该怎么办?它只显示我想要查看调用层次结构的方法的名称。这种情况发生在我尝试的所有方法中,即使它们都被其他方法调用。
这对代码导航非常有用。我不知道没有它怎么工作!
我试过了:
eclipse.exe -clean -refresh
我已经检查过它搜索整个工作区,并且没有过滤器。
答案 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.