Describe the bug
The product icode-app contains the correct dependencies for using JAXB in Java 11 but not icode-library. When using a Sonar Scanner CLI version 4 (using JRE 11), analysis fails because of JAXB library.
Run sonar-scanner -Dsonar.projectKey=myKey -Dsonar.sources=. with a Sonar Scanner using Java 11
Expected behavior
i-Code products should be usable with any version of Java between 8 and 11.
Screenshots & log
SEVERE: [fr.cnes.icode] [ERROR] Class: fr.cnes.icode.fortran77.metrics.Fortran77MetricsDefinition
Method: addFromResources
javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:278)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:421)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662)
at fr.cnes.icode.data.XmlHandler.unmarshal(XmlHandler.java:53)
at fr.cnes.icode.data.CheckersDefinition.addFromResources(CheckersDefinition.java:108)
at fr.cnes.icode.fortran77.metrics.Fortran77MetricsDefinition.define(Fortran77MetricsDefinition.java:27)
at fr.cnes.icode.data.CheckersDefinition.list(CheckersDefinition.java:45)
at fr.cnes.icode.services.checkers.CheckerService.getCheckers(CheckerService.java:60)
at fr.cnes.icode.services.checkers.CheckerService.getCheckers(CheckerService.java:166)
at fr.cnes.icode.Analyzer.stableCheck(Analyzer.java:207)
at fr.cnes.sonar.plugins.icode.check.ICodeSensor.executeEmbeddedICode(ICodeSensor.java:189)
at fr.cnes.sonar.plugins.icode.check.ICodeSensor.execute(ICodeSensor.java:110)
at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:48)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:85)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:59)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:77)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:59)
at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:82)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:386)
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:382)
at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:351)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:141)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
at com.sun.proxy.$Proxy0.execute(Unknown Source)
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
at org.sonarsource.scanner.cli.Main.main(Main.java:61)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory
at java.base/java.net.URLClassLoader.findClass(Unknown Source)
at org.sonarsource.scanner.api.internal.IsolatedClassloader.loadClass(IsolatedClassloader.java:82)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:122)
at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:155)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:276)
... 42 more
User environment (please complete the following information):
OS: Debian
Java version: 11
i-Code version: 4.0.0
Additional context
This problem was discovered on sonar-icode-cnes-plugin 2.0.1.
Describe the bug The product
icode-app
contains the correct dependencies for using JAXB in Java 11 but noticode-library
. When using a Sonar Scanner CLI version 4 (using JRE 11), analysis fails because of JAXB library.There are two solutions:
To reproduce
sonar-scanner -Dsonar.projectKey=myKey -Dsonar.sources=.
with a Sonar Scanner usingJava 11
Expected behavior i-Code products should be usable with any version of Java between 8 and 11.
Screenshots & log
User environment (please complete the following information):
Additional context This problem was discovered on sonar-icode-cnes-plugin 2.0.1.