ホームページ  >  記事  >  Java  >  依存パッケージの優先度を設定する方法の紹介

依存パッケージの優先度を設定する方法の紹介

不言
不言転載
2019-02-13 15:39:294111ブラウズ

この記事では依存パッケージの優先度設定方法を紹介しますので、困っている方は参考にしていただければ幸いです。

問題が発生します。XML 解析ツールには脆弱性のリスクがあるため、古いプロジェクトの返金機能が WeChat 支払いバックエンドによって無効にされました。
WeChat カスタマー サービスが提供した解決策は、公式パッチを使用することです。
パッチを使用した後、xml-api パッケージが jdk に付属のパッケージと競合することが判明しました。
具体的な理由:
xml-api パッケージ内の特定のクラスは、jdk に付属のクラスと同じ完全修飾名を持っていますが、xml-api パッケージには関連する実装がありません。 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

関連記事

続きを見る