找出Java/Eclipse项目中使用特定包的类的位置
我有许多Eclipse项目都使用特定包中的类,我们称之为“gr.serafeim”。现在,我想找到我所有源文件中使用gr.serafeim的成员的位置(每个文件的行号)。问题是我通常使用的是导入,而不是类的完全限定名,因此搜索“gr.serafeim”只会返回导入语句:( 我不想要任何东西,只需要一个快速而肮脏的解决方案来找出包含gr.serafeim包(eclipse插件?)类的所有行。作为一个附加值,我不想要这些函数的声明,也不想要这些函数的方法调用 下面是一个我真正想要的例子:找出Java/Eclipse项目中使用特定包的类的位置,java,eclipse,find,grep,package,Java,Eclipse,Find,Grep,Package,我有许多Eclipse项目都使用特定包中的类,我们称之为“gr.serafeim”。现在,我想找到我所有源文件中使用gr.serafeim的成员的位置(每个文件的行号)。问题是我通常使用的是导入,而不是类的完全限定名,因此搜索“gr.serafeim”只会返回导入语句:( 我不想要任何东西,只需要一个快速而肮脏的解决方案来找出包含gr.serafeim包(eclipse插件?)类的所有行。作为一个附加值,我不想要这些函数的声明,也不想要这些函数的方法调用 下面是一个我真正想要的例子: // Fi
// File main.java
import gr.serafeim.*;
public static void main(String args[]) {
// Test is a member of gr.serafeim !
Test t = new Test(5);
int i=3;
t.add(i);
}
我想从上一个文件中得到的回报是这样的
main.java: 5: Test t = new Test(5);
main.java: 7: t.add(i);
如果前面的方法不能实现,那么我也可以用一种方法对我所有的类进行大规模的名称限定
Test t = new Test(5);
将成为
gr.serafeim.Test t = new gr.serafeim.Test(5);
然后我只需要grep为gr.serafiem。这当然无助于找到t.add(I)行,但这将是一个很好的第一步,我可以从那里开始自己检查代码
右键单击->引用->(任意选择)。对于工作区引用,按住Shift-Ctrl-G键(默认情况下) 我认为默认的结果列表是一个树,可以更改为列表。但是,我不认为它显示行号,至少在我使用的Eclipse版本中是这样。如果您专门查找行号,我认为默认工具没有包含行号的导出 您可以尝试IntelliJ社区版;它的搜索确实显示行号,并且结果可以导出到文本文件(下面的片段) 这里有一个骇客: 使用package-info.java文件将包标记为已弃用:
@Deprecated
package com.yourcompany.yourpackage;
现在,您应该可以在使用包的任何地方看到编译器警告,您可以选择类、构造函数、方法或字段,然后按“ctrl+alt+h”。这将打开调用层次菜单。@SeanPatrickFloyd哦,我明白了。在这种情况下,我认为没有从字节码中提取的好选项。这看起来非常好,我实际上不知道package-info.java文件!事实上,我现在知道需要将package-info.java文件放在包的源代码中。我的问题是m是因为我没有我正在使用的库的源!!!那么我现在能做什么?@Serafeim从您的生成路径中删除库。现在编译器错误将显示在您使用库类的任何地方。
@Deprecated
package com.yourcompany.yourpackage;