Подтвердить что ты не робот

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

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

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

Я пробовал:

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

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

Fedora 20, Eclipse Kepler.

Ответ 7

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

Ответ 8

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

Ответ 9

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

Ответ 10

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

Ответ 11

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

right click on the project -> project facet.  

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

configure the project facet -> Apply -> ok.