Eclipse IDE - открытая иерархия вызовов пуста / не работает

Что мне делать, если "Открытая иерархия вызовов" не работает (пусто для каждого метода в проекте)? Это очень полезно для навигации по коду, не знаю, как работать без него!

8 ответов

Решение

Следующее может помочь:

  • Вызов eclise с помощью eclipse.exe -clean -refresh заставляет Eclipse перестроить индекс. После этого функция снова заработала.
  • Закрытие и повторное открытие проекта.

Я также попробовал приведенные выше предложения и подсказку, приведенную здесь: http://mschrag.blogspot.co.at/2009/01/open-type-cant-find-your-class.html

Ничего не работало до сегодняшнего дня, когда я узнал, что я осел... Однажды я настроил фильтр в представлении "Иерархия вызовов", поэтому записи не были показаны, поскольку отфильтрованы. После удаления / отключения фильтра все снова заработало.

Когда вы переходите к отчету об ошибке Eclipse для этой проблемы, кто-то говорит, что вы должны установить поверх Маркета Java 12 support,
Когда я установил его, он снова работал правильно

В моем случае казалось, что мое рабочее пространство было загрязнено.

Открытие / закрытие проектов и запуск с чистой не исправить. Я должен был начать новую рабочую область.

Fedora 20, Eclipse Kepler.

Для Kepler и PDT (PHP IDE) он сломан как минимум в PDT 3.2.0 и 3.3.0 (пробовал их обоих). Исправление в 3.3.1 и обновление до этого было все, что мне нужно было сделать, чтобы иерархия вызовов снова заработала.

(извините, я пока не могу добавлять комментарии, однако это должно пригодиться многим)

Кроме того, вы можете попытаться удалить рабочее пространство и восстановить его. Убедитесь, что все ваши проекты сохранены.

Пробовал все во всех ответах здесь, но ни один из них не работал у меня. Позже я выяснил, что это ошибка в Eclipse 2019-03 (https://bugs.eclipse.org/bugs/show_bug.cgi?id=545293). Попробуйте обновить eclipse или установить более новую версию. Для меня установка более новой версии (последняя версия Eclipse 2019-09) решила проблему.

Я попробовал много ответов, все были великолепны, это помогло многим, кроме немногих, и я был немногим.

Моя версия eclipse - 2019-03 (4.11.0). Это ошибка. Что можно исправить с помощью дополнений.

Перейдите в Eclipse Marketplace и найдите плагин java 12 Support for Eclipse 2019-03(4.11)… и установите его. По завершении установки перезапустите eclipse. Надеюсь, это решит проблему. Хорошего дня.

В моем случае я пытался получить иерархию вызовов метода в производном классе абстрактного класса. Запрашиваемый метод был объявлен как абстрактный в базовом классе. Когда я открыл иерархию вызовов непосредственно на абстрактном методе вместо реализованного, все работало хорошо. (Затмение Неон).

У меня такое же поведение с затмением Кеплера (4.3.2).

Я обнаружил, что есть ошибка с методами с сигнатурой:

void get(Object o)
Object get(Object o)

В представлении журнала ошибок затмения я нахожу следующее исключение:

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) решит эту проблему.

Моя проблема была в том, что Open Call Hierarchy искал только проект, а не всю рабочую область. Поэтому мне пришлось нажать на маленькую стрелку вниз (в окне представления "Иерархия вызовов" справа; это стрелка "Меню просмотра" - треугольник, указывающий вниз) в представлении "Иерархия вызовов", установить область поиска> Рабочая область.

Если иерархия вызовов не открывается, это может быть связано с тем, что проект не импортируется как проект Java, а будет отображаться в структуре файла. Вы можете включить фасет проекта через:

right click on the project -> project facet.  

Если вы ничего не видите в списке, вам нужно

configure the project facet -> Apply -> ok. 
Другие вопросы по тегам