如何找到jar中定义的包?

Ash*_*ary 10 jar package maven

我有一堆JAR文件(来自maven2项目)和maven报告无法找到一些包(确切地说是org.openanzo.client.jena).我想深入研究作为maven依赖解析结果下载的JAR文件,并找到这些JAR文件可用的包.见解?

更新:显然,检查jar文件内部的唯一好方法是"jar"实用程序,或者可以使用其IDE的工具来执行此操作.

Zac*_*son 15

jar tvf filename.jar 将显示jar文件的内容,而无需您提取它.

但我认为你真正想要做的就是为你所缺少的依赖找到合适的坐标,因为很明显你现在没有提供你正在寻找的包(换句话说,检查它们内容不太可能帮助你).

我承认,我建议检查的第一个地方是Sonatype的公共Nexus实例.但是,搜索你的例子并没有任何结果.通常这意味着项目不是试图将他们的东西放到Maven Central或其他主要的存储库中(这没关系),所以你不得不求助于网络搜索.通常包的前两部分会告诉你在哪里看(在你的情况下是openanzo.org).


jmo*_*253 11

如果您使用的是Linux或Mac,则可以转到包含JAR的文件夹根目录下的终端并输入:

   # grep -ri "org.openanzo.client.jena" *
Run Code Online (Sandbox Code Playgroud)

它将返回包含该包名称的所有JAR文件的递归列表.如果它返回0结果,那么这些JARS都不包含该包.

如果您想进行更详尽的搜索,可以解开JAR文件.目录结构和.class文件将按文件夹中的包进行组织.

  # jar xvf filename.jar
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Windows,则可以使用7Zip等工具来解析JAR文件.

  • 如果您使用的是 Windows,则可以使用 cygwin 和 linux grep :) (2认同)