Maison  >  Article  >  Java  >  Comment éviter « Xerces Hell » en Java/Maven ?

Comment éviter « Xerces Hell » en Java/Maven ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-20 04:23:01284parcourir

How to Avoid

Vous faites face à « Xerces Hell » dans Java/Maven ?

Contexte

Xerces, un analyseur XML largement utilisé dans l'écosystème Java, pose des problèmes importants défis dus à des facteurs historiques et à des problèmes d’emballage. Les binaires officiels de Xerces manquent de version et le projet n'est pas officiellement téléchargé sur Maven Central. De plus, la division de Xerces en plusieurs fichiers jar (xml-apis, xercesImpl) et les différentes pratiques de gestion des versions par différentes parties ont aggravé le problème. Cela entraîne des conflits et des problèmes de chargeur de classe lors de l'utilisation de Xerces dans des environnements Maven.

Problèmes

Résolution des conflits

Incapacité de Maven à résoudre les conflits entre différentes versions du même artefact, même lorsque publié par différentes organisations, conduit à des situations où plusieurs dépendances Xerces sont incluses, entraînant potentiellement un chemin de classe conflits.

Classloader Hell

L'inclusion de Xerces à la fois dans l'implémentation de référence JAXP et dans les conteneurs de servlets, combinée aux versions potentiellement conflictuelles des dépendances Maven, crée un scénario de chargement de classes complexe, nécessitant une gestion minutieuse pour éviter les conflits de chargeur de classe au moment de l'exécution.

Solutions

Tentatives d'exclusion ou de marquage Les dépendances Xerces telles que fournies peuvent être difficiles en raison des multiples alias et dépendances de bibliothèques et de frameworks tiers. Cependant, un développement important est apparu :

Mise à jour récente

En février 2013, une version corrigée des scripts de build Xerces a été téléchargée pour résoudre le problème de téléchargement de Maven Central. Les JAR Xerces 2.11.0 sont désormais disponibles dans Maven Central, résolvant les problèmes de version et d'empaquetage de longue date.

Ce développement simplifie considérablement la gestion des dépendances Xerces dans les projets Maven. Les développeurs peuvent désormais utiliser la déclaration de dépendance suivante pour résoudre correctement Xerces :

<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.11.0</version>
</dependency>

Cette solution élimine le besoin d'un contrôle précis des dépendances et de mécanismes de chargement de classes complexes à plusieurs niveaux.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn