Java:如何知道给定类名的jar文件?

给定一个类,例如org.eclipse.ui.views.navigator.ResourceNavigator ,如何找出要使用的jar文件? 我知道它在org.eclipse.ui.ide中,但我怎么能找到它?

编辑 :谢谢你们所有回答的人。 像很多东西一样,似乎有几种方法可以给这只猫上皮。 我希望javadoc包含这个信息。 到目前为止,这里有不同的方法:

  1. 没有Internet,Eclipse或NetBeans:

    for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done 
  2. 如果您想使用Eclipse在本地查找:

    • JAR Class Finder插件
    • 类定位器插件
  3. 如果你想从互联网上找到你还是没有jar:

    • jarFinder
    • findjar.com

你也有这个eclipse插件: jarclassfinder

用户输入未找到的类的名称(或Java项目需要访问的类的名称)。 该插件将在所选目录(和子目录)中搜索包含该类的JAR文件。

所有结果都显示在自定义视图的表格中。 然后,用户可以浏览此表并选择要添加到其Java项目构建路径的JAR文件。 然后,用户右键单击表中的条目,然后从上下文菜单中选择要添加它的构建路径。


更新2013年,正如我在“ 搜索.jar文件eclipse ”中所提到的那样,它不再被维护,而且备选方案很少。

正如sunleo评论如下 :

使用Eclipse, Ctfl + Shift + T仍然是查找类型的最简单方法
(jar状态名称显示在状态栏中)。


user862268评论如下 :

对于mac,在Eclipse中使用cmd + shift + T来查找类和关联的jar。

如果您在类路径/项目路径中有jar,请按CTRL-SHIFT-T并键入名称… jar将显示在底部。

如果您的构建路径中没有该类a)将包含所有jar的虚拟项目放在一起b)我认为有一个插件可以从IBM Alphaworks中查找jar(但可能有点过时了)

在Eclipse IDE中转到Ctrl + Shift + T.

出现打开类型对话框,您可以在其中输入类名。 之后显示包标识符和jar目标。

要回答这个问题,没有真正的方法可以知道使用哪个jar子。 不同的版本可能会有不同的行为。

当找到包含给定类的jar时,我使用:

 for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done 

这将突出显示包含作为任何子文件夹中的参数传入的类名的任何jar。

查找类的另一个好方法是使用maven repos搜索 。

对我来说这很好:

 find * -type f -name '*.jar' -exec grep -l 'TestClass.class' '{}' \; 

问候

使用此: netbeans插件

或jarFinder服务

 **shell> find . -name "*.jar" | xargs -i -t \jar tvf {} | grep [TheClassNameYouAreLookingFor]** 

例如,如果您在apache commons jar列表中查找类LogFactory.class,则下面的命令将起作用

 shell> find apache-commons/ -name "*.jar" | xargs -i -t \jar tvf {} | grep LogFactory.class jar tvf apache-commons/commons-beanutils-1.7.0.jar jar tvf apache-commons/commons-fileupload-1.2.1.jar jar tvf apache-commons/commons-lang-2.3.jar **jar tvf apache-commons/commons-logging-1.1.jar** **21140 Tue May 09 23:08:12 EDT 2006 org/apache/commons/logging/LogFactory.class** jar tvf apache-commons/commons-net-1.3.0.jar 

上面的结果表明匹配是commons-logging-1.1.jar

使用class / JAR定位器:

http://classlocator.sourceforge.net/

[编辑]即使从ClassLocator的文档(!)也不是很明显,但它似乎是一个Eclipse插件。

我使用FindJar.com 。 它列出了包含任何给定类的所有已知包! 这非常有帮助。

通常,我做jar -vtf foo.jar来获取所有类文件的列表。
不是最实用的方式,但方便。 当然,您可以将结果与grep结合起来。

在Intellij IDEA中,您只需按住类名称即可,您将被移动到该类的伪源代码,窗口的标题将类似于c:\ path \ to \ lib.jar!\ com \ something \ ClassName。类

我不确定我是否真的理解这个问题,但是如果你想要validation你的类是否真的在jar中,你可以随时查看jar本身,为此你不需要任何Eclipse插件或专门的外用。

JAR(Java ARchive)文件只不过是ZIP文件。 您所要做的就是解压缩jar,甚至使用zip阅读应用程序查看它。 例如,在Windows XP中,它内置于操作系统中。 多方便

希望这有助于……

Yuval = 8-)

另请查看http://javacio.us/ 。

IntelliJ IDEA插件(类猎人)

您也可以尝试Jarvana来查找特定类的jar文件。

我投票给CTRL-SHIFT-T,因为它已经包含在Eclipse中。 我实际上在eclipse安装中的插件目录中删除了jarclassfinder.jar,但仍然无法在Eclipse GUI中找到该插件

如果你告诉eclipse打开一个声明(F3)或实现(Navigate-> Open Implementation)并且你进入一个不可编辑的编辑窗口,你可以通过右键单击编辑器窗口并选择它来查看jar文件的路径’用面包屑显示’

我的发现基于unix:

 find . -name "*.jar" -print -exec jar -tf {} \; >outputfile 

编辑输出文件以找到你想要的(而不是grep)