如何在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”,以及如何避免它?