Maison >Java >javaDidacticiel >Introduction à la méthode de définition de la priorité des packages dépendants

Introduction à la méthode de définition de la priorité des packages dépendants

不言
不言avant
2019-02-13 15:39:294169parcourir

Ce que cet article vous apporte est une introduction à la méthode de définition de la priorité des packages dépendants. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Un problème survient : la fonction de remboursement d'un ancien projet a été désactivée par le backend de paiement WeChat car l'outil d'analyse XML présente un risque de vulnérabilité
La solution proposée par le service client WeChat est d'utiliser le patch officiel. .
Après avoir utilisé le correctif, j'ai découvert que le package xml-api était en conflit avec le package fourni avec jdk.
Raisons spécifiques :
Une certaine classe du package xml-api a le même nom complet qu'une classe fournie avec jdk, mais il n'y a pas d'implémentation pertinente dans le package xml-api
L'IDE. ne dépend pas de jdk Le package intégré s'appuie d'abord sur le package xml-api, ce qui empêche le projet de terminer la compilation.

Essayez de résoudre :
在 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 包;所以问题还是没有解决。
Solution recommandée :
修改依赖包的优先级:

    因为这个老项目是用 Eclipse 开发,先说 Eclipse 操作方法。
    Eclipse:
        设置 build path order;
        把优先级高的包放到上面,
        所以可以把 jre 的包放到最上面。
    
    顺便看了下 IDEA 的设置,也能修改优先级。
    IDEA:
        修改 classpath order:
        菜单:File -> Project Structure -> Modules
        快捷键:Ctrl + Alt + Shift + S  -> Modules
        把优先级高的包放到上面,
        IDEA 中,jdk 自带的包默认就是最高优先级,所以使用 IDEA 不会出现类似的问题。


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer

Articles Liés

Voir plus