Avatar ·

如何在Java/Maven项目中战胜“Xerces Hell”?

大家好!我是一名初级Java开发者,已经和第二周在互联网上被称为“Xerces Hell”的问题斗争了。 我们有一个大型Maven项目(Spring Boot + Hibernate)。突然在运行测试时开始出现类似这样的错误: ``` java.lang.NoSuchMethodError: org.apache.xerces.impl.dv.util.Base64.(Ljava/lang/String;)V ``` 或者 ``` java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser ``` 而且,在某些模块中代码可以运行,在其他模块中却不行。我显式地在pom.xml中添加了xerces依赖,但情况变得更糟。现在我的classpath中出现了两个不同的org.apache.xerces.jaxp.SAXParserImpl类——一个来自xercesImpl库,另一个来自xml-apis。 我尝试通过排除传递性依赖——部分有效,但并未完全解决问题。最终,只有当我手动从本地Maven仓库中删除jar文件时,应用程序才能正常工作。 请告诉我如何正确解决这个问题?什么是“Xerces Hell”,以及如何避免它?