Eclipse - 查找没有附加源的库的Java引用

Pav*_*ral 9 java eclipse eclipse-jdt

环境

我有一个test-foo.jar只有两个文件的简单库:

  • 接口Foo用一种方法void doStuff()
  • Bar使用单个方法的类void executeFoo(Foo foo),只需调用foo.doStuff()

然后我有Eclipse Java项目,FooImpl它有一个实现的类Foo.该项目具有test-foo.jar构建路径条目.我没有附加此JAR的源代码.

Eclipse项目树

问题

现在让我说我对谁实际调用doStuff()方法有点好奇.所以我点击FooImpl#doStuff签名并按Ctrl+ Shift+ G(找到参考).我希望Bar#executeFoo在搜索结果中看到,但结果实际上是空的.

清空搜索结果

问题

我有点困惑,因为我认为这在Eclipse中有效(现在已经使用Eclipse了几年).但它似乎只适用于附带源代码的图书馆(我之前没有注意到).

有没有办法在没有附加源的情况下在项目库中查找类型(或方法)的引用(或用法)?为什么Eclipse没有索引并显示.class文件中的引用?


附加信息:

  • 一旦我将源代码附加到JAR,查找引用就会起作用.
  • 我很想知道为什么Eclipse JDT开发人员决定不在没有源的情况下索引搜索 .class.
  • 请注意,即使我没有源代码,知道谁调用我的方法也是非常有用的信息.
  • 在我看来,Eclipse的是索引方法的引用.class文件.
  • 顺便说一句,NetBeans"也不起作用";).

小智 0

您需要将源附加到您的库。Eclipse 没有必要将您带到 .class 文件,因为您看到的只是一堆已编译的 Jamble-wamble(这只是我想出的一个词)。Eclipse 将仅导航至 Java 源文件。

  • 我知道,当您将 Java 与某些闭源第三方库一起使用时,您可能从未遇到过任何集成问题;)。或者当你需要实现额外的功能时,官方文档几乎不存在,并且 Google 恰好返回 0 个结果。试图理解事物如何运作并没有什么不道德的。 (2认同)