web-dev-qa-db-fra.com

Éclipse IDE - Open Hierarchy est vide/cassé

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!

24
Skip

Les éléments suivants peuvent aider:

  • Appeler eclise avec Eclipse.exe -clean -refresh force Eclipse à reconstruire l'index. Après cela, la fonctionnalité a encore fonctionné.
  • Fermeture et réouverture du projet.
32
Skip

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é.

12
Christian Lischnig

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)

1
Tuco

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.

1
Conan

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. 

1
Leo Ufimtsev

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).

0
Thomas Lauria

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.

0
bobbel

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.

0
jedison