Maven ne peut pas comstackr la classe qui dépend de rt.jar

Le serveur CI (Hudson), dont je suis responsable, construit le projet Maven. Après la dernière validation, la construction a échoué:

[INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] \hudson\jobs\path to my class\MyClass.java:[33,62] package com.sun.xml.internal.messaging.saaj.packaging.mime.util does not exist [ERROR] \hudson\jobs\path to my class\MyClass.java:[75,5] cannot find symbol symbol : class BASE64EncoderStream location: class |fullname of MyClass| [ERROR] \hudson\jobs\path to my class\MyClass.java:[75,38] cannot find symbol symbol : class BASE64EncoderStream location: class |fullname of MyClass| [INFO] 3 errors 

La classe requirejse (com.sun.xml.internal.messaging.saaj.packaging.mime.util.BASE64EncoderStream) est située dans rt.jar.

J’ai essayé (conformément aux instructions sur http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#System_Dependencies ) d’append la dépendance du système dans le fichier pom.xml du projet:

  dummy dummy 1 system ${java.home}/lib/rt.jar  

Cela n’a pas aidé.

Le plus intéressant est que tous les fichiers sont correctement compilés sur la machine locale de mon collègue (il utilise le compilateur intégré Eclipse).

Sur Internet, j’ai trouvé la même question (lien: http://maven.40175.n5.nabble.com/Why-can-t-Maven-find-com-sun-xml-internal-messaging-saaj-util-ByteOutputStream- class-td107361.html ). La dernière réponse a été que le compilateur Java d’Oracle était à l’origine de ce problème.

J’ai donc changé le jdk d’Oracle en OpenJDK, mais cela n’a pas aidé.

Est-ce que quelqu’un a des suggestions sur la façon de résoudre ce problème?

La classe manquante semble être interne à JRE (comme indiqué dans son espace de noms) et ne doit pas être référencée à partir de votre code. Il n’est probablement disponible que sur certaines plates-formes ou versions de JRE.

Envisagez de le remplacer par une autre classe d’encodeurs Base64, par exemple une classe du projet Apache Commmons Codec .

Nécessité de spécifier -XDignore.symbol.file et d’append les dépendances rt.jar et true car le plug-in du compilateur supprimera automatiquement les indicateurs -XD: par exemple

  ...  groupid artifiactId 1.0 system ${java.home}/lib/rt.jar      org.apache.maven.plugins maven-comstackr-plugin 3.3  1.7 1.7  -XDignore.symbol.file  true  ...