当前位置: 首页 > 知识库问答 >
问题:

Maven类加载顺序

蒋哲
2023-03-14

我对maven的类加载顺序有一个问题。

我知道,自maven版本2.0.9以来,类加载一直是确定性的,并且在pom中使用顺序。我不清楚传递依赖关系。maven是否首先加载所有顶级依赖项,然后加载传递依赖项。或者加载具有所有传递依赖项的顶级依赖项,然后加载下一个顶级依赖项。

我知道在完全正确的maven设置中,顺序没有问题,但我在依赖项中有一些重复的类,我想知道使用哪一个。排除可传递依赖项是没有选择的,因为并非所有类都包含在两个JAR中。

例如:我的项目有三个依赖项A、B和C。A对C有传递依赖。加载依赖项的maven顺序是什么?

POM:

  • A

案例A:

一个--

案例B:A

谢谢你

共有1个答案

松雅昶
2023-03-14

我已经用调试选项-X检查了类路径,并且类路径对应于案例b。

第一个依赖项(A)与其可传递依赖项(C)一起加载到类路径上。然后加载下一个pom条目(B)。

我希望其他用户可以验证我的解决方案。

 类似资料:
  • 问题内容: 我在以下情况下有一个关于保证的问题(请注意,问题不是 “如何以其他方式做到这一点?” ,实际上是关于以下情况下的类加载顺序)更好地了解类加载的工作原理)。 这是一个假设的场景…一个 .war 文件具有以下(部分)目录结构: 两个 Bunny.class 文件均已导入,并引用了 acme.jar中的 其他类。 __ Bunny.class 在 WEB-INF /班/ … 是具有相同的名称

  • 问题内容: 我在其他地方找不到这个问题的明确答案,因此我将在这里尝试: 是否有某种方法(以编程方式或其他方式)来获取Application Classloader加载时所加载的JAR /类列表的确切顺序?应用程序类加载器,我是指在应用程序服务器(WLS,WAS,JBoss …)中加载EAR应用程序的类加载器,但显然,它适用于任何类加载器。 因此,概括地说,我想找出的是由指定类加载器加载的JAR的列

  • 我是按照Spring的教程,一切都工作正常,直到我克隆我的项目,现在克隆的项目和原来的项目不想工作,我已经搜索槽整个堆栈溢出类似的问题,我无法解决这个问题,我已经清理了项目,重新启动eclipse,更新,添加和删除依赖项从pom.xml似乎没有什么工作。 这是我的主要课程: Beans.xml: 波姆。xml: 正如我所说,当我在同一个工作区复制粘贴项目时,一切都开始失败,当然我更改了名称。 这个

  • 和这个一样,但还是没弄明白。尝试了所有解决方案.... Maven错误:找不到或加载主类org.codehaus.plexus.ClassWorlds.Launcher.Launcher 错误:找不到或加载主类org.codehaus.plexus.ClassWorlds.Launche r.Launcher

  • 问题内容: 我正在尝试使用jQuery动态加载一些脚本: 但是有时加载脚本的顺序会发生变化。前一个脚本成功加载后,如何加载每个脚本? 问题答案: 您可以通过使用回调函数作为递归函数调用在前一个完成加载后加载每个。 在您的代码中发生的是,脚本是同时被请求的,并且由于它们是异步加载的,因此它们以随机顺序返回并执行。 我尚未对此进行测试,但是如果脚本是在本地托管的,则可以尝试以纯文本格式检索它们,然后将

  • 问题内容: 我已经尝试了几天,为我的多模块maven项目创建可执行的jar文件。但是,当我尝试运行此jar文件时,出现“找不到或加载主类src.main.java.com.domain.Mainclass”(出于公司隐私的考虑,我更改了名称domain和MainClass) 我已经搜寻了几天,似乎没有任何明显的技巧可行。 我的项目有一个主要的Maven项目,该项目可以下载所有依赖项(packagi