Ответ 1
Следующее может помочь:
- Вызов eclipse с помощью
eclipse.exe -clean -refresh
заставляет Eclipse перестроить индекс. После этого функция снова заработала. - Закрытие и повторное открытие проекта.
Что мне делать, если "Открытая иерархия вызовов" не работает (пусто для каждого метода в проекте)? Он показывает только имя метода, для которого я хотел увидеть иерархию вызовов. Это происходит для всех методов, которые я пробую, хотя они все вызываются другими методами.
Это очень полезно для навигации по коду. Я не знаю, как работать без него!
Я пробовал:
eclipse.exe -clean -refresh
Я проверил, что он ищет во всем рабочем пространстве, и нет никаких фильтров.
Следующее может помочь:
eclipse.exe -clean -refresh
заставляет Eclipse перестроить индекс. После этого функция снова заработала.Я также попробовал вышеупомянутые предложения, а также подсказку, приведенную здесь: http://mschrag.blogspot.co.at/2009/01/open-type-cant-find-your-class.html
Ничего не работало до сегодняшнего дня, когда я узнал, что я осел... Однажды я настроил фильтр в представлении "Иерархия вызовов", поэтому записи не были показаны, поскольку отфильтрованы. После удаления/отключения фильтра все снова заработало.
Кто-то говорит, что когда вы переходите к отчету об ошибке затмения, вам следует установить на Market место Java 12 support
.
Когда я установил его, он снова работал правильно
Кроме того, вы можете попытаться удалить рабочую область и восстановить ее. Убедитесь, что все ваши проекты созданы под резервными копиями.
Для Kepler и PDT (PHP IDE) он разбит, по крайней мере, на PDT 3.2.0 и 3.3.0 (попробовал их оба). Исправление в версии 3.3.1 и обновление до этого было все, что я должен был сделать, чтобы снова вызвать иерархию вызовов.
(извинения, мне еще не разрешено добавлять комментарии, однако это должно оказаться удобным для многих)
В моем случае это казалось, что мое рабочее пространство было заражено.
Открытие/закрытие проектов и начало с чистого не исправить. Мне пришлось начать новую рабочую область.
Fedora 20, Eclipse Kepler.
У меня такое же поведение с 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) решит эту проблему.
В моем случае я пытался получить иерархию вызовов метода в производном классе абстрактного класса. Запрошенный метод был объявлен абстрактным в базовом классе. Когда я открыл иерархию вызовов непосредственно на абстрактном методе вместо внедренного, все работало хорошо. (Eclipse Neon).
Моя проблема заключалась в том, что Иерархия открытых вызовов искала только проект, а не всю Рабочую область. Поэтому я должен был щелкнуть маленькую стрелку вниз (в окне просмотра иерархии вызовов справа, это стрелка "Меню просмотра" - треугольник, указывающий вниз) в представлении "Иерархия вызовов", установите область поискa > Рабочее пространство.
Перепробовал все во всех ответах здесь, но ни один из них не помог мне. Позже я понял, что это ошибка в Eclipse 20119-03 (https://bugs.eclipse.org/bugs/show_bug.cgi?id=545293). Попробуйте обновить затмение или установить более новую версию. Для меня установка более новой версии (последняя версия Eclipse 2019-09) решила проблему.
Если иерархия вызовов не открывается, это может быть связано с тем, что проект не импортируется как проект Java, а будет отображаться в структуре файла. Вы можете включить фасет проекта через:
right click on the project -> project facet.
Если вы ничего не видите в списке, вам нужно
configure the project facet -> Apply -> ok.