36

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

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

私はもう試した:

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

ワークスペース全体を検索することを確認しましたが、フィルターはありません。

4

12 に答える 12

34

以下が役立つ場合があります。

  • で eclipse を呼び出すと、eclipse.exe -clean -refreshEclipse は強制的にインデックスを再構築します。その後、機能は再び機能しました。
  • プロジェクトを閉じて再度開く。
于 2013-08-16T07:32:03.863 に答える
1

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

于 2014-01-17T09:17:52.353 に答える
1

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

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

于 2014-09-19T13:15:47.067 に答える
0

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

于 2017-01-04T16:00:22.630 に答える
0

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

于 2016-01-12T12:36:24.000 に答える
-1

呼び出し階層が開かない場合は、プロジェクトが Java プロジェクトとしてインポートされていないことが原因である可能性があり、むしろファイル構造に表示されます。次の方法でプロジェクト ファセットを有効にすることができます。

right click on the project -> project facet.  

リストに何も表示されない場合は、

configure the project facet -> Apply -> ok. 
于 2019-03-27T09:06:50.797 に答える