Java 10中javax.xml.stream等包无法解析,非模块化下需何种Maven依赖?
解决Java 10中javax.xml.stream相关包无法解析的Maven依赖问题
问题场景
在Java 8中,我曾使用以下包:
import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.transform.stream.StreamSource;切换至Java 10后,这些包无法被解析。我不想使用模块,请问需添加什么Maven依赖?
解决方案
你不需要额外添加新的Maven依赖,反而需要排除项目中依赖的旧版stax-api和xml-apis库。
原因是Java 9及以后的版本已经将这些XML相关的API内置到JDK中了,如果你的项目依赖了第三方库带来的旧版stax-api或xml-apis,就会和JDK自带的API产生类路径冲突,导致包无法被正常解析。
你需要在项目的Maven依赖中,找到引入这两个旧库的依赖项,添加排除规则:
<dependency> <groupId>你的依赖groupId</groupId> <artifactId>你的依赖artifactId</artifactId> <version>依赖版本号</version> <exclusions> <!-- 排除旧版stax-api --> <exclusion> <groupId>stax</groupId> <artifactId>stax-api</artifactId> </exclusion> <!-- 排除旧版xml-apis --> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> </exclusion> </exclusions> </dependency>
排除之后,项目就会自动使用JDK 10内置的XML相关API实现,这样就能解决包无法解析的问题了。
内容的提问来源于stack exchange,提问作者Xdg
相关产品推荐
相关产品推荐

