• 技术文章 >后端开发 >java教程

    依赖包的优先级设置的方法介绍

    不言不言2019-02-13 15:39:29转载247
    本篇文章给大家带来的内容是关于依赖包的优先级设置的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    问题出现:一个老项目的退款功能被微信支付后台停用,原因是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 不会出现类似的问题。

    以上就是依赖包的优先级设置的方法介绍的详细内容,更多请关注php中文网其它相关文章!

    第八期线上培训班
    专题推荐:xml eclipse idea java
    上一篇:JSP中如何使用Cookie?(代码示例) 下一篇:spring validation作为数据校验的方法介绍(附代码)

    相关文章推荐

    • 怎么通过Composer接触到更多好用的依赖包或者工具包?• linux源码编译php5.4以上自带php-fpm的configure参数和依赖包• CI框架使用composer安装的依赖包步骤与方法分析• 几种npm依赖包管理分享

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网