web-dev-qa-db-ja.com

Eclipse IDE-Open Call Hierarchy is empty / broken

「Open Call Hierarchy」が壊れている場合はどうすればよいですか(プロジェクトのすべてのメソッドで空)。呼び出し階層を確認したいメソッドの名前のみが表示されます。これらはすべて他のメソッドによって呼び出されていますが、これは私が試すすべてのメソッドで発生します。

コードナビゲーションに非常に役立ちます。私はそれなしで働く方法がわかりません!

私はもう試した:

  1. オープニングEclipse.exe -clean -refresh
  2. Eclipseを再起動する
  3. プロジェクトを閉じて再度開く
  4. プロジェクトの更新
  5. .metadataファイルの名前を変更する

ワークスペース全体を検索すること、およびフィルターがオンになっていないことを確認しました。

34
Skip

以下が役立ちます:

  • Eclipse.exe -clean -refreshを使用してEclipseを呼び出すと、Eclipseは強制的にインデックスを再構築します。その後、機能は再び動作しました。
  • プロジェクトを閉じて再度開きます。
34
Skip

上記の提案と、ここに示すヒントも試しました: http://mschrag.blogspot.co.at/2009/01/open-type-cant-find-your-class.html =

私がロバであることがわかった今日まで何も機能しませんでした...一度「Call Hierarchy」ビューでフィルターを設定しました。フィルターを削除/無効にすると、すべてが再び正常に機能しました。

15

この問題について Eclipseバグレポート にアクセスすると、市場の場所にJava 12 support
インストールすると、再び正常に機能していました

7
Joerg

KeplerとPDT(PHP IDE)の場合、少なくともPDT 3.2.0と3.3.0で壊れています(両方試してみました)。修正は3.3.1にあり、それを更新するだけで、コール階層を再び機能させることができました。

(申し訳ありませんが、コメントの追加はまだ許可されていませんが、これは多くの人にとって便利なはずです)

1
Tuco

また、ワークスペースを削除して再作成することもできます。すべてのプロジェクトがバックアップされていることを確認してください。

1
Conan

私の場合、私のワークスペースが汚染されているように見えました。

プロジェクトを開いたり閉じたりしてクリーンで開始すると修正されませんでした。新しいワークスペースから始めなければなりませんでした。

Fedora 20、Eclipse Kepler。

1
Leo Ufimtsev

私の場合、抽象クラスの派生クラスにあるメソッドの呼び出し階層を取得しようとしていました。要求されたメソッドは、基本クラスで抽象として宣言されました。実装されたメソッドではなく、抽象メソッドで直接呼び出し階層を開いたところ、すべてがうまくいきました。 (Eclipse Neon)。

0
Thomas Lauria

ここですべての答えのすべてを試しましたが、どれも私にとってはうまくいきませんでした。後で私はこれがEclipse 2019-03のバグであることを理解しました( https://bugs.Eclipse.org/bugs/show_bug.cgi?id=54529 )。 Eclipseをアップグレードするか、新しいバージョンをインストールしてください。新しいバージョン(最新バージョンのEclipse 2019-09)をインストールすることで問題は解決しました。

0
VINAY VKK

私はEclipse Kepler(4.3.2)でも同じ動作をします。

私は、署名が次のメソッドにバグがあることを発見しました:

void get(Object o)
Object get(Object o)

EclipseError Logビューで、次の例外を見つけました。

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)にアップグレードすると、この問題が解決すると思います。

0
bobbel

私は多くの答えを試しましたが、すべてが素晴らしく、それは少数を除いて多くを助け、私は少数でした。

私のEclipseバージョンは2019-03(4.11.0)です。これはバグがあります。アドオンで修正できます。

Eclipse Marketplaceに移動し、プラグインEclipseのJava 12 Support 2019-03(4.11)…を検索してインストールします。インストールが完了したら、Eclipseを再起動します。うまくいけば、これで問題が解決します。ごきげんよう。

0
Deepesh kumar

私の問題は、Open Call Hierarchyがワークスペース全体ではなくプロジェクトのみを検索していたことでした。したがって、[階層の呼び出し]ビューで(下の[呼び出し階層ビュー]ウィンドウにあります。これは[表示メニュー]の矢印(下向きの三角形)です)小さな下矢印をクリックする必要があり、[検索範囲]> [ワークスペース]を設定します。

0
jedison