11

我有一个 Java 项目,在内部它依赖于asm jar. 奇怪的是,我什至不知道为什么我的项目以某种方式依赖于这个库(可能是由 maven 作为传递依赖引入的)?

谁能帮我知道为什么有人需要 asm jar

提前致谢 !

编辑: 您能否还提到一个可能需要 asm jar 的目的/用例?

4

4 回答 4

15

ASM是一个字节码操作框架(请参阅此页面以获得很好的介绍),并被许多执行... 字节码操作:使用代理生成和反射的框架(Spring、Hibernate 等)、模拟框架(EasyMock、JMock 等) )、代码分析工具(PMDFindbugs等)。实际上,ASM 项目维护了一个按类别组织的用户列表,请查看。

正如 Vincent 所提到的,如果您传递地依赖 ASM,那么dependency:tree目标或依赖关系报告(请参阅上面的 PMD 和 Findbugs 链接以获取示例)可以帮助分析情况并找出它的来源。但这不会考虑您正在使用的 maven 插件的依赖关系,只考虑项目的依赖关系。

于 2009-11-25T19:36:54.547 回答
4

Maven-2 需要asm.jar编译和运行应用程序。

在这里了解更多信息。

编辑:

由于程序分析、生成和转换技术的许多可能用途,已经实现了许多用于分析、生成和转换程序的工具,包括 Java 在内的许多语言。ASM 是 Java 语言的这些工具之一,专为运行时(但也离线)类生成和转换而设计。因此,ASM1 库旨在处理已编译的 Java 类。它还被设计为尽可能快和尽可能小。为了避免在运行时使用 ASM 以进行动态类生成或转换的应用程序的速度,尽可能快很重要。为了在内存受限的环境中使用,并避免使用 ASM 使小型应用程序或库的大小膨胀,尽可能小很重要。ASM 不是生成和转换已编译 Java 类的唯一工具,但它是最新且最高效的工具之一。它可以从下载http://asm.objectweb.org。它的主要优点如下: 1)它具有简单、设计良好的模块化API,易于使用。2) 它有据可查,并且有一个相关的 Eclipse 插件。3) 它为最新的 Java 版本 Java 6 提供支持。 4) 它体积小、速度快且非常健壮。5)其庞大的用户社区可以为新用户提供支持。6) 它的开源许可证允许您以几乎任何您想要的方式使用它。

从此pdf文件中找到。我的印象是,随着 Java EE 6 的出现,还有一个用于类生成和转换的内置工具 ASM。PDF 让您更深入地了解 ASM。

希望这可以帮助。

于 2009-11-25T17:51:09.747 回答
2

您的项目还有哪些其他依赖项?我怀疑您决定需要的其中一个罐子(例如 Spring 或 Hibernate)本身需要 asm.jar 吗?

于 2009-11-25T17:50:51.843 回答
2

可以使用 Maven 的依赖插件来查看哪个库有 asm 作为依赖。

于 2009-11-25T17:53:40.100 回答