Java:如何根据类名知道要使用哪个jar文件?

时间:2008-11-08 20:09:40

标签: java eclipse 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在本地查找:

  3. 如果您想从互联网上找到或者您还没有使用jar:

17 个答案:

答案 0 :(得分:18)

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

如果您的构建路径中没有该类 a)组装一个包含所有罐子的虚拟项目 b)我认为有一个插件可以从IBM Alphaworks找到罐子(但可能有点过时了)

答案 1 :(得分:17)

你也有这个eclipse插件:jarclassfinder

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

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


2013年更新,正如我在“searching through .jar files eclipse”中提到的那样,它已不再维护,而且替代方案很少。

正如sunleo评论below

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


user862268评论below

  

对于mac,在Eclipse中它是 cmd + shift + T 以查找类和相关的jar。

答案 2 :(得分:9)

在Eclipse IDE中选择Ctrl + Shift + T

出现

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

答案 3 :(得分:8)

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

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

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

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

找到课程的另一个好方法是使用the maven repos search

答案 4 :(得分:5)

对我来说这很好用:

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

此致

答案 5 :(得分:3)

使用此:netbeans plugin

jarFinder服务

答案 6 :(得分:3)

**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

答案 7 :(得分:2)

使用class / JAR定位器:

http://classlocator.sourceforge.net/

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

答案 8 :(得分:2)

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

答案 9 :(得分:1)

在Intellij IDEA中你只需按住Ctrl键点击类名,你将被移动到该类的伪源代码,窗口的标题就像c:\ path \ to \ lib.jar!\ com \ something \ ClassName.class

答案 10 :(得分:1)

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

答案 11 :(得分:0)

答案 12 :(得分:0)

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

答案 13 :(得分:0)

同时检查http://javacio.us/

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

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

希望这有助于......

Yuval = 8 - )

答案 16 :(得分:0)

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

我的发现基于unix:

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

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