Que dois-je faire si la "hiérarchie d'appels ouverts" est brisée (vide pour chaque méthode d'un projet)? C'est très utile pour la navigation de code, je ne sais pas, comment travailler sans elle!
Les éléments suivants peuvent aider:
J'ai également essayé les suggestions ci-dessus, ainsi que l'allusion donnée ici: http://mschrag.blogspot.co.at/2009/01/open-type-cant-fant-your-class.html
Rien ne fonctionnait jusqu'à aujourd'hui, lorsque j'ai découvert que je suis un âne ... J'ai déjà configuré un filtre dans la vue "Hiérarchie des appels" et aucune entrée n'a été affichée car filtrée. Une fois que j'ai enlevé/désactivé le filtre, tout a bien fonctionné.
Pour Kepler et PDT (PHP IDE), il est cassé dans au moins PDT 3.2.0 et 3.3.0 (essayé les deux). Le correctif est dans 3.3.1 et la mise à jour vers cela était tout ce que j'avais à faire pour que la hiérarchie d'appels fonctionne à nouveau.
(excuses, je ne suis pas encore autorisé à ajouter des commentaires, mais cela devrait s'avérer pratique pour beaucoup)
En outre, vous pouvez essayer de supprimer l’espace de travail et de le recréer. Assurez-vous que tous vos projets sont sauvegardés.
Dans mon cas, il semblait que mon espace de travail était contaminé.
Ouvrir/fermer des projets et commencer par nettoyer n'a pas été résolu. Je devais commencer un nouvel espace de travail.
Fedora 20, Eclipse Kepler.
Dans mon cas, j'essayais d'obtenir la hiérarchie d'appels d'une méthode dans la classe dérivée d'une classe abstraite. La méthode demandée a été déclarée abstraite dans la classe de base. Lorsque j'ai ouvert la hiérarchie des appels directement sur la méthode abstraite au lieu de la méthode implémentée, tout a bien fonctionné. (Eclipse Neon).
J'ai le même comportement avec Eclipse Kepler (4.3.2).
J'ai découvert qu'il y a un bogue avec les méthodes avec la signature de:
void get(Object o)
Object get(Object o)
Dans la vue Eclipse Error Log, je trouve l'exception suivante:
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)
Au final, cela ressemble à un bug dans cette version:
https://bugs.Eclipse.org/bugs/show_bug.cgi?id=401272
Je suppose que la mise à niveau au moins vers la version 4.4 (Luna) résoudra ce problème.
Mon problème était que Open Call Hierarchy cherchait uniquement dans le projet, pas dans tout l'espace de travail. J'ai donc dû cliquer sur la petite flèche vers le bas (dans la fenêtre de la vue hiérarchique des appels à droite; il s'agit de la flèche du "Menu Affichage" - un triangle pointant vers le bas) dans la vue Hiérarchie des appels, définissez l'étendue de la recherche. > Espace de travail.