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

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

Это очень полезно для навигации по коду. Я не знаю, как работать без него!

Я пробовал:

  1. Открытие eclipse.exe -clean -refresh
  2. Перезапуск Затмения
  3. Закрытие и повторное открытие проекта
  4. Обновление проекта
  5. Переименование файла .metadata

Я проверил, что он ищет всю рабочую область, и фильтры не включены.


person Skip    schedule 21.03.2013    source источник
comment
Я также обнаружил, что он не работает в редакторе, но все еще работает в PHP Explorer. Что раздражает, но работает.   -  person Adrian    schedule 11.11.2015


Ответы (12)


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

  • Вызов eclipse с eclipse.exe -clean -refresh заставляет Eclipse перестроить индекс. После этого функция снова заработала.
  • Закрытие и повторное открытие проекта.
person Skip    schedule 16.08.2013
comment
Сегодня я столкнулся с этой проблемой, и это решение сработало для меня в версии: Kepler Service Release 1 Build id: 20130919-0819. - person Gunanaresh; 22.10.2014
comment
Я использую плагин vrapper, чтобы сделать опыт редактирования похожим на vim, и обнаружил, что после установки этого плагина вам нужно выделить полное имя функции в редакторе (двойной щелчок по нему), и тогда он работает - person ec2011; 13.10.2015
comment
У меня не работает с: Версия: Luna Release (4.4.0) Идентификатор сборки: 20140612-0600 - person RaphMclee; 08.02.2016

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

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

person Christian Lischnig    schedule 13.10.2014
comment
Спасибо. Моя проблема была похожей, за исключением того, что по какой-то причине она изменила область поиска на один из моих других проектов. Я установил его в Workspace, и это решило проблему. - person man910; 11.11.2015
comment
У меня была похожая проблема, но еще серьезнее. У меня не было созданного проекта, но для меня это было неочевидно, потому что я перенес код с другого компьютера, и у меня был удаленный проводник, я видел исходные файлы, исходное дерево, я даже смог выполнить некоторую отладку. .. но это не значит, что у меня был создан проект! Я создал проект сейчас. Кстати, мне пришлось долго ждать, чтобы все DLTK Indexing состоялось. - person pgr; 15.04.2016
comment
Странно, что я несколько раз видел этот ответ и думал: «Ни за что». Не я. Но каким-то образом мой фильтр, который я ранее настроил, сошел с ума. Ранее я настроил его для фильтрации всех вызовов от JUnits, но теперь он каким-то образом удаляет фактические вызовы. Думаю, мне придется разобраться, что там произошло. - person searchengine27; 27.11.2018

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

person Joergi    schedule 23.05.2019
comment
для более новой версии Eclipse все снова работало, без установки Java 12 support - person Joergi; 03.07.2019

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

person Conan    schedule 17.01.2014

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

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

person Tuco    schedule 19.09.2014

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

Открытие/закрытие проектов и запуск с очистки не исправили. Пришлось начинать с нового рабочего места.

Fedora 20, Затмение Кеплера.

person Leo Ufimtsev    schedule 10.10.2014

У меня такое же поведение с 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) решит эту проблему.

person bobbel    schedule 12.01.2016

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

person Thomas Lauria    schedule 30.08.2016

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

person jedison    schedule 04.01.2017

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

person VINAY VKK    schedule 17.10.2019

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

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

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

person Deepesh kumar    schedule 10.01.2020

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

right click on the project -> project facet.  

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

configure the project facet -> Apply -> ok. 
person Barani r    schedule 27.03.2019
comment
У меня сам аспект проекта все еще показывает ошибку. Я импортировал его как общий проект. Может ли это вызвать проблему? - person Shubham Jain; 19.06.2020