Plugin incompatibility with JDK (e.g. Sonar i-Code CNES plugin)

Hello all,

I tried to upgrade our SonarQube server from 7.7 to the 7.9 LTS version. All seemed to work fine, until I wanted to install the Sonar i-Code CNES plugin. As the following page indicates, the plugin should be compatible: https://docs.sonarqube.org/latest/instance-administration/plugin-version-matrix/. However, after installation, the SonarQube server would no longer start.

While looking into the issue, I found the following in the web.log file:
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException

While looking further into this exception, the most obvious problem that might’ve caused this is the fact that SonarQube 7.9 LTS now requires Java 11 (https://docs.sonarqube.org/latest/setup/upgrade-notes/), but from this version, the (already deprecated) JAXB module has been removed.

There is a solution to this that I think should be made from the plugin: including the necessary JAXB dependencies to the plugin.

But in any case, I believe that the plugin-version-matrix (https://docs.sonarqube.org/latest/instance-administration/plugin-version-matrix/) should be updated. Perhaps there are more plugins that depend on previously deprecated and in Java 11 removed modules.

Thanks for the effort in making this great product.

With kind regards,

Joël

Hey Jöel,

Does the plugin work if you use Java 8 on the scanner-side?

Colin

Hey Colin,

This will be hard to test, because I cannot start SonarQube with the plugin installed. I realize I was not very clear in that aspect. However, the exception occurs during intialization:
2019.07.10 17:46:53 ERROR web[][o.s.s.p.Platform] Background initialization failed. Stopping SonarQube
java.lang.IllegalStateException: Fail to load plugin Sonar i-Code CNES plugin [icode]

Joël

Jöel,

Sorry I missed this part earlier (and had been working on a support ticket where the failure was scanner-side!)

Thanks for the clarification. We can definitely update the marketplace (which by extension updates the Plugin Version Matrix) – I would recommend that you open an issue at lequal/sonar-icode-cnes-plugin regarding future plans for this plugin

Colin

Hey guys,

I wanted to give an update. So I’ve been able to add the JAXB dependencies (2.3.0) to the plugin.

[INFO] --- sonar-packaging-maven-plugin:1.18.0.372:sonar-plugin (default-sonar-plugin) @ sonaricode ---
[INFO] -------------------------------------------------------
[INFO] Plugin definition in update center
[INFO]     Key: icode
[INFO]     Name: Sonar i-Code CNES plugin
[INFO]     Description: i-Code CNES plugin for SonarQube
[INFO]     Version: 1.1.0
[INFO]     Display Version: 1.1.0
[INFO]     Entry-point Class: fr.cnes.sonar.plugins.icode.ICodePlugin
[INFO]     Required Plugins:
[INFO]     Does the plugin support SonarLint?: false
[INFO]     Use Child-first ClassLoader: false
[INFO]     Base Plugin:
[INFO]     Homepage URL: https://github.com/lequal/sonar-icode-cnes-plugin
[INFO]     Minimal SonarQube Version: 6.7.1
[INFO]     Licensing: GNU General Public License, Version 3.0
[INFO]     Organization: CNES
[INFO]     Organization URL: http://cnes.fr
[INFO]     Terms and Conditions:
[INFO]     Issue Tracker URL:
[INFO]     Build date: 2019-07-31T11:56:58+0200
[INFO]     Sources URL:
[INFO]     Developers: Cyrille Francois,Nicolas Métivier,Benoît Garçon,Omar Waldmann
[INFO]     Dependencies: META-INF/lib/jaxb-api-2.3.0.jar META-INF/lib/jaxb-core-2.3.0.jar META-INF/lib/jaxb-core-2.3.0.jar META-INF/lib/txw2-2.3.0.jar META-INF/lib/commons-lang-2.6.jar META-INF/lib/jaxb-impl-2.3.0.jar META-INF/lib/activation-1.1.jar META-INF/lib/Fa
stInfoset-1.2.13.jar META-INF/lib/stax-ex-1.7.8.jar META-INF/lib/istack-commons-runtime-3.0.5.jar META-INF/lib/jaxb-runtime-2.3.0.jar

It installs just find and SonarQube server seems to accept the plugin. However, when running the plugin I am facing a problem that others seem to face as well, but in different contexts (Eclipse Equinox, for example (https://github.com/eclipse-ee4j/jaxb-api/issues/78)).

The problem is that when JAXB runs, it fails to find an implementation of the JAXB-API:

2019.07.31 09:11:48 WARN  web[][f.c.s.p.i.l.ICodeQualityProfiles] Implementation of JAXB-API has not been found on module path or classpath.
javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.

On google I can find a lot of discussion about this topic, but none of the answers have helped me so far.

Is there anyone here who can help me out with this problem?

We have the same problem that Joel reported.
We would like to try to use Fortran plugin for our older computational cores that are written in Fortran. Unfortunately we cannot find solution to run i-Code plug-in properly and we are a stuck.
Any of you have some suggestions how to solve it?

We regret any inconvenience that this issue may have caused.

We were focused on the new i-Code CNES release and we were not coordinate with the SonarQube roadmap.

The version 2.0.0 of Sonar i-Code CNES plugin should be released soon on the Marketplace : [NEW RELEASE] SonarQube i-Code CNES plugin 2.0.0

You can get the Release Candidate (which should be the final one) here: https://github.com/lequal/sonar-icode-cnes-plugin/releases/tag/2.0.0-RC1

Benoît