我有一堆JAR文件(来自maven2项目)和maven报告无法找到一些包(确切地说是org.openanzo.client.jena)。我想深入研究作为maven依赖解析结果下载的JAR文件,并找到这些JAR文件可用的包。见解?
更新:显然,检查jar文件内部的唯一好方法是“jar”实用程序,或者可以使用其IDE的工具来执行此操作。
答案 0 :(得分:13)
jar tvf filename.jar
将向您显示jar文件的内容,而无需您将其解压缩。
但是我想也许你真正要做的就是为你所缺少的依赖找到合适的坐标,因为很明显你现在没有提供你正在寻找的包(换句话说) ,检查他们的内容不太可能帮助你。)
我承认,我建议检查的第一个地方是Sonatype的public Nexus instance。但是,搜索your example没有任何结果。通常这意味着项目不是试图将他们的东西放到Maven Central或其他主要的存储库中(这没关系),所以你不得不求助于网络搜索。通常,包的前两部分会告诉您在哪里查看(在您的情况下为openanzo.org)。
答案 1 :(得分:10)
如果您使用的是Linux或Mac,则可以转到包含JAR的文件夹根目录下的终端并输入:
# grep -ri "org.openanzo.client.jena" *
它将返回包含该包名称的所有JAR文件的递归列表。如果它返回0结果,则那些JARS都不包含该包。
如果您想进行更详尽的搜索,可以解析JAR文件。目录结构和.class文件将按文件夹中的包进行组织。
# jar xvf filename.jar
如果您使用的是Windows,则可以使用7Zip等工具取消JAR文件。
答案 2 :(得分:2)
@Carsten 您不必将.jar文件重命名为.zip。您可以直接在winzip /或其他zip实用程序中打开jar文件(假设是Windows操作系统)
@ ashy_32bit 尝试使用IBM的“jar class finder”eclipse插件。用于查找类的简单插件(如果您知道类名)
OR
正如carsten建议的那样......将jar文件设置为lib文件并手动查找
OR
创建一个名为a.bat的批处理文件(您将所有jar文件直接放在一个文件夹下)并粘贴以下4行
@ECHO OFF
dir /b *.jar > allJarFilesList.txt
FOR /F %%A IN (allJarFilesList.txt) DO jar -tf %%A > list_of_packages.txt
FOR %%B IN (list_of_packages.txt) DO FIND /I "com/sun" %%B
注意最后一行中的“com / sun”..它是硬编码的,你也可以作为参数传递...
我知道这是非常基本的形式,并且可以像查找各种子目录一样“改进”。
希望这会有所帮助: - )
答案 3 :(得分:1)
.jar文件只是ZIP压缩存档,将其重命名为zip,使用您最喜欢的解压缩程序打开它,然后遍历目录。
如果将jar文件添加到eclipse项目中,则可以遍历项目浏览器中的lib。
HTH
答案 4 :(得分:0)
假设maven下载了jar文件,文件将被加载到本地存储库中。 您可以使用随Eclipse打包的maven浏览器来浏览和搜索存储库中的工件。(通常在userdir / .m2 / repository中)
注意:如果需要,您可以直接浏览您的存储库。您将了解下载的软件包。但我建议使用插件。
如果您使用的是Intellij IDEA,则每个项目都包含一个名为External Library的树,允许您搜索和浏览库。