Merci beaucoup de cet éclaircissement. En ce qui concerne l'import depuis le SCM, pas moyen d'y arriver, la liste déroulante des SCM disponibles est vide et je ne sais pas comment la remplir, mais entre temps j'ai recherché dans une autre direction, j'ai créé un projet j2ee à partir d'un archétype jboss qui contenait déjà toutes les arborescences requises, et j'ai mis mes fichiers à la place des fichiers d'exemple. Ce n'est pas très propre, je me réserve la possibilité de la jouer plus fine quand je comprendrais mieux ce qui se passe.
En attendant, je suis parvenu bon an mal an a avoir un projet maven qui se comporte comme il faut, mais avec encore toutes les librairies dans WebInf/lib. Et puis je me suis attelé à la tache de configurer les librairies dans le pom, ça m'a pris l'après midi car il y en avait 68, dépendances comprises. Au stade où j'en suis, ça compile, ça commence à se déployer, mais ça échoue tout de suite, pour plusieurs raisons: d'abord il y a:
1 2 3 4 5
| org.jboss.seam.InstantiationException: Could not instantiate Seam component: Toto
Caused by: org.jboss.seam.InstantiationException: Could not instantiate Seam component Bidule
Caused by: org.jboss.seam.InstantiationException: Could not instantiate Seam component: hibernateSessionFactory
Caused by: org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml
Caused by: org.dom4j.DocumentException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory Nested exception: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory |
Cette erreur là, je ne la comprends pas trop. J'ai essayé de placer le fichier hibernate.cfg.xml à divers endroit, ou de l'ajouter au build path, mais sans succès. Après vérification, il s'avère qu'il est bien copié au bon endroit du dossier de déploiement, mais pourtant il n'est pas trouvé, et je me demande s'il n'en est pas de même des autres fichiers (j'ai choisi de configurer Eclipse pour positionner sa sortie de compilation dans le répertoire src/main/webapp/WEB-INF/classes comme dans l'astuce du tuto).
Et puis j'ai aussi la joie de découvrir l'exception que je n'avais encore jamais rencontrée, qui est liée aux soucis de transitivités, je veux parler de:
java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, com/sun/faces/config/ConfigureListener, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature
Quoique je ne suis pas certain que ce soit toujours des problèmes de transitivité, c'est peut être simplement des librairies que j'ai mises en "compile" et qu'il aurait fallu mettre en "provided". Toujours est-il que je me suis attelé à la fastidieuse tache de règler les conflits, en me limitant pour l'instant à satisfaire le plus grand nombre. A l'heure actuelle, tout se résume au schéma suivant:

A ce sujet, j'ai lu avec intérêt le tutoriel sur la gestion fine des dépendances, mais je ne peux m'empêcher de me poser quelques questions: En effet,
- vu que la plupart des conflits sont dans des dépendances de dépendances de dépendances, et que les exclusions ne sont valides que pour la ramification directement liée, comment faire? Si je commence à spécifier manuellement la version de la dépendance de dépendance de dépendance pour pouvoir en exclure une dépendance, je ne vais pas m'en sortir le jour où je vais vouloir faire évoluer l'application.
- en outre, je me demande comment va réagir la librairie que l'on force du coup à utiliser une librairie différente de ce qu'elle souhaite. Est-ce que ça ne risque pas de causer de problèmes?
Bon Week End à vous!
Partager