首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Java 8升级到Java 11后,接收加载程序约束违反

从Java 8升级到Java 11后,接收加载程序约束违反
EN

Stack Overflow用户
提问于 2020-01-20 05:32:17
回答 1查看 1.7K关注 0票数 4

我正在将一个庞然大物应用程序从Java 8升级到Java 11。我们仍然使用Java 8构建,但使用Java 11运行。

由于加载程序违反约束,我看到一个类没有正确加载。代码库通过maven依赖项中的jar文件导入该类。如果我们在启动应用程序之前删除jar文件,问题就会消失。

错误如下:

加载程序违反约束:加载程序‘引导’希望加载接口org.w3c.dom.traversal.NodeIterator。以前由com.app.CustomClassLoader @9626f9 (父加载程序java.net.URLClassLoader @13afa3)加载了同名的不同接口)

我发现以前这个类是由引导类加载器首先加载的。现在,它首先由自定义应用程序加载程序加载。顺序差异如下:

Java 8:

/java-1.8.0_221.i586/jre/lib/rt.jar信息/jre/lib/rt.jar信息/ jvm 1区2020/01/08 11:34:34.184加载了org.w3c.dom.traversal.NodeIterator文件:/webapp/lib/dom4j-x.jar

Java 11

信息org.dom4j.NodeIterator源文件:/org.dom4j.NodeIterator源文件:/webapp/lib/dom4j-x.jar加载org.w3c.dom.traversal.NodeIterator源文件:/webapp/lib/xml-x.jar INFO \ jvm 1 2020/01/07 17:46:15.772 AC.26 30.210 source,load org.w3c.dom.traversal.NodeIterator源代码: jrt:/java.xml

启动前手动删除xml-x.x.x.jar可防止这种情况发生。我试图在不删除jar或依赖项的情况下解决这个问题。是否有办法迫使引导类加载器首先加载xml-x.x.x.jar文件?我尝试在引导路径中添加jar文件,但是它没有解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-20 13:21:11

如果仅在构建过程中需要此工件,则可以将其作用域更改为提供的<scope>provided</scope>,这样maven就不会为运行时加载此依赖项

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59817466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档