问题出现:
一个老项目的退款功能被微信支付后台停用,缘由是xml解析工具备漏洞风险, 微信客服给出的解决方案是使用官方的补丁。 使用补丁后发现:xml-api包与jdk自带的包冲突。 具体缘由: xml-api包的某个类与jdk自带的某个类具备相同的全限定名,可是xml-api包中并无相关实现, IDE没有依赖jdk自带的包,而是优先依赖xml-api包,致使项目没法完成编译。
尝试解决:
在 Maven 中排除 xml-api 包: 从父 pom 里面作排除: 可是项目年代久远,各类类库的依赖盘根错节, 到父 pom 里面没找到依赖,到依赖的自定义基本库里面也没找到。 何况考虑到父 pom 被其余项目依赖的可能性,因此仍是想一想其余办法。 全局排除: 在 pom 文件里加入冲突包的依赖,而后再排除包里所有的内容: <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> <exclusions> <exclusion> <groupId>*</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> 这个方法可以排除掉项目对 xml-api 包里的所有依赖; 可是由于先导入后排除,项目依然会优先依赖 xml-api 包;因此问题仍是没有解决。
推荐方案:
修改依赖包的优先级: 由于这个老项目是用 Eclipse 开发,先说 Eclipse 操做方法。 Eclipse: 设置 build path order; 把优先级高的包放到上面, 因此能够把 jre 的包放到最上面。 顺便看了下 IDEA 的设置,也能修改优先级。 IDEA: 修改 classpath order: 菜单:File -> Project Structure -> Modules 快捷键:Ctrl + Alt + Shift + S -> Modules 把优先级高的包放到上面, IDEA 中,jdk 自带的包默认就是最高优先级,因此使用 IDEA 不会出现相似的问题。
传送门:http://blog.51cto.com/1350814...
本文系笔者原创
转载请注明出处
—————————————api