Java:如何知道给定类名的jar文件?
给定一个类,例如org.eclipse.ui.views.navigator.ResourceNavigator ,如何找出要使用的jar文件? 我知道它在org.eclipse.ui.ide中,但我怎么能找到它?
编辑 :谢谢你们所有回答的人。 像很多东西一样,似乎有几种方法可以给这只猫上皮。 我希望javadoc包含这个信息。 到目前为止,这里有不同的方法:
-
没有Internet,Eclipse或NetBeans:
for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done
-
如果您想使用Eclipse在本地查找:
- JAR Class Finder插件
- 类定位器插件
-
如果你想从互联网上找到你还是没有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)