Version Java Jenkins

De EjnTricks

Suite à des mises à jour de Ubuntu, les variables d'environnement du serveur Tomcat, des anomalies sont apparues.

Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Study icon.png Etude

L'erreur a été constatée sur l'affichage du graphique des résultats des tests unitaires. L'image n'est plus disponible.


Comme pour toute image sur une page Web, il est possible d'essayer d'afficher l'image dans un nouvel onglet / nouvelle fenêtre. Dans ce cas, le message d'erreur est affiché avec la trace Java.

java.lang.NoClassDefFoundError: Could not initialize class org.jfree.chart.JFreeChart
	at org.jfree.chart.ChartFactory.createStackedAreaChart(ChartFactory.java:1124)
	at hudson.tasks.test.AbstractTestResultAction.createChart(AbstractTestResultAction.java:358)
	at hudson.tasks.test.AbstractTestResultAction.doGraph(AbstractTestResultAction.java:299)
	at hudson.tasks.test.TestResultProjectAction.doTrend(TestResultProjectAction.java:111)
	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:343)
	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:184)
	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:117)
	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:129)
	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)


Le problème provient donc du chargement de la classe org.jfree.chart.JFreeChart.


Configuration-icon.png Modifications

La recherche de cette erreur indique principalement un problème de variable d'environnement Java, où il manque le paramètre -Djava.awt.headless=true. Cependant dans le cadre cette installation, sur une machine Ubuntu et un serveur Tomcat8, le paramètre est positionné dans le script de démarrage /etc/init/d/tomcat9

# Default Java options
# Set java.awt.headless=true if JAVA_OPTS is not set so the
# Xalan XSL transformer can work without X11 display on JDK 1.4+
if [ -z "$JAVA_OPTS" ]; then
        JAVA_OPTS="-Djava.awt.headless=true"
fi

Or, il se trouve que la version de Java utilisée correspond à la version libre OpenJDK. Et par défaut, le paquet openjdk-8-jre-headless est installé et ne permet pas de charger la classe JFreeChart.

#sudo dpkg --get-selections | grep openjdk
openjdk-8-jre-headless:amd64                    install

La solution consiste à installer le paquet openjdk-8-jre.

#sudo apt-get install openjdk-8-jre
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
The following additional packages will be installed:
  fonts-dejavu-extra libatk-wrapper-java libatk-wrapper-java-jni libgif7
Les NOUVEAUX paquets suivants seront installés :
  fonts-dejavu-extra libatk-wrapper-java libatk-wrapper-java-jni libgif7 openjdk-8-jre
0 mis à jour, 5 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 2 114 ko dans les archives.
Après cette opération, 7 883 ko d'espace disque supplémentaires seront utilisés.