Sonar Analysis scanner seems to be generating a directory with illegal characters

I am running Sonar analysis from a Jenkins pipeline analyzing Java code. When it tries to init the first module, it fails due to an illegal character (") in a directory it is parsing. However, this looks like a directory generated by Sonar, under the scannerwork directory. I’m not sure where this BACKEND is coming from, as it is not specified in my code or sonar properties file, but for some reason it adds quotes and then fails. Let me know if you need more info from me.

20:55:39 Caused by: java.nio.file.InvalidPathException: Illegal char <"> at index 59: D:\Jacoco\DEN_EM.scannerwork\com.sunrise.messengers.em.raf_“com.sunrise.em.EM_BACKEND”

My sonar server version is 8.2.0.32929
The plugin versions are:
SonarPython 2.5.0.5733 (python)
SonarCSS 1.2.0.1325 (cssfamily)
JaCoCo 1.0.2.475 (jacoco)
SonarGo 1.6.0.719 (go)
SonarKotlin 1.5.0.315 (kotlin)
Svn 1.9.0.1295 (scmsvn)
SonarJS 6.2.0.12043 (javascript)
SonarRuby 1.5.0.315 (ruby)
SonarScala 1.5.0.315 (sonarscala)
SonarC# 8.4.0.15306 (csharp)
SonarJava 6.1.0.20866 (java)
SonarHTML 3.2.0.2082 (web)
Git 1.9.1.1834 (scmgit)
SonarFlex 2.5.1.1831 (flex)
SonarXML 2.0.1.2020 (xml)
SoftVis3D Sonar plugin 1.1.0 (softvis3d)
SonarPHP 3.3.0.5166 (php)
SonarTS 2.1.0.4359 (typescript)
SonarVB 8.4.0.15306 (vbnet)

Full stack trace:

20:55:39 21:55:38.981 DEBUG: Creating module hierarchy
20:55:39 21:55:38.981 DEBUG:   Init module 'Enterprise Manager (RAF)'
20:55:39 21:55:38.982 DEBUG:     Base dir: D:\Jacoco\DEN_EM
20:55:39 21:55:38.982 DEBUG:     Working dir: D:\Jacoco\DEN_EM\.scannerwork
20:55:39 21:55:38.982 DEBUG:     Module global encoding: UTF-8, default locale: en_US
20:55:39 21:55:38.982 DEBUG:   Init module 'EmtEjbTierUtils'
20:55:39 21:55:39.003 INFO: ------------------------------------------------------------------------
20:55:39 21:55:39.003 INFO: EXECUTION FAILURE
20:55:39 21:55:39.003 INFO: ------------------------------------------------------------------------
20:55:39 21:55:39.003 INFO: Total time: 3.382s
20:55:39 21:55:39.040 INFO: Final Memory: 6M/101M
20:55:39 21:55:39.040 INFO: ------------------------------------------------------------------------
20:55:39 21:55:39.040 ERROR: Error during SonarQube Scanner execution
20:55:39 java.lang.IllegalStateException: Unable to load component class org.sonar.scanner.scan.WorkDirectoriesInitializer
20:55:39 	at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:65)
20:55:39 	at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:678)
20:55:39 	at org.sonar.core.platform.ComponentContainer.getComponentByType(ComponentContainer.java:281)
20:55:39 	at org.sonar.scanner.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:154)
20:55:39 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:134)
20:55:39 	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
20:55:39 	at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:141)
20:55:39 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
20:55:39 	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
20:55:39 	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
20:55:39 	at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:98)
20:55:39 	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:63)
20:55:39 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
20:55:39 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
20:55:39 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
20:55:39 	at java.lang.reflect.Method.invoke(Method.java:497)
20:55:39 	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
20:55:39 	at com.sun.proxy.$Proxy0.execute(Unknown Source)
20:55:39 	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233)
20:55:39 	at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
20:55:39 	at org.sonarsource.scanner.cli.Main.runAnalysis(Main.java:123)
20:55:39 	at org.sonarsource.scanner.cli.Main.execute(Main.java:77)
20:55:39 	at org.sonarsource.scanner.cli.Main.main(Main.java:61)
20:55:39 Caused by: java.lang.IllegalStateException: Unable to load component class org.sonar.scanner.scan.DefaultInputModuleHierarchy
20:55:39 	at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:65)
20:55:39 	at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:632)
20:55:39 	at org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:118)
20:55:39 	at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136)
20:55:39 	at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78)
20:55:39 	at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309)
20:55:39 	at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335)
20:55:39 	at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
20:55:39 	at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364)
20:55:39 	at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56)
20:55:39 	at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64)
20:55:39 	at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91)
20:55:39 	at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699)
20:55:39 	at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647)
20:55:39 	at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:63)
20:55:39 	... 22 more
20:55:39 Caused by: java.nio.file.InvalidPathException: Illegal char <"> at index 59: D:\Jacoco\DEN_EM\.scannerwork\com.sunrise.messengers.em.raf_"com.sunrise.em.EM_BACKEND"
20:55:39 	at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
20:55:39 	at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
20:55:39 	at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
20:55:39 	at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
20:55:39 	at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255)
20:55:39 	at java.io.File.toPath(File.java:2234)
20:55:39 	at org.sonar.api.batch.fs.internal.AbstractProjectOrModule.initWorkingDir(AbstractProjectOrModule.java:91)
20:55:39 	at org.sonar.api.batch.fs.internal.AbstractProjectOrModule.<init>(AbstractProjectOrModule.java:57)
20:55:39 	at org.sonar.api.batch.fs.internal.DefaultInputModule.<init>(DefaultInputModule.java:49)
20:55:39 	at org.sonar.scanner.scan.InputModuleHierarchyProvider.createModule(InputModuleHierarchyProvider.java:65)
20:55:39 	at org.sonar.scanner.scan.InputModuleHierarchyProvider.createChildren(InputModuleHierarchyProvider.java:56)
20:55:39 	at org.sonar.scanner.scan.InputModuleHierarchyProvider.provide(InputModuleHierarchyProvider.java:43)
20:55:39 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
20:55:39 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
20:55:39 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
20:55:39 	at java.lang.reflect.Method.invoke(Method.java:497)
20:55:39 	at org.picocontainer.injectors.MethodInjector.invokeMethod(MethodInjector.java:129)
20:55:39 	at org.picocontainer.injectors.MethodInjector.access$000(MethodInjector.java:39)
20:55:39 	at org.picocontainer.injectors.MethodInjector$2.run(MethodInjector.java:113)
20:55:39 	at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
20:55:39 	at org.picocontainer.injectors.MethodInjector.decorateComponentInstance(MethodInjector.java:120)
20:55:39 	at org.picocontainer.injectors.CompositeInjector.decorateComponentInstance(CompositeInjector.java:58)
20:55:39 	at org.picocontainer.injectors.Reinjector.reinject(Reinjector.java:142)
20:55:39 	at org.picocontainer.injectors.ProviderAdapter.getComponentInstance(ProviderAdapter.java:96)
20:55:39 	at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699)
20:55:39 	at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647)
20:55:39 	at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:63)
20:55:39 	... 36 more
20:55:39 21:55:39.043 ERROR: 
20:55:39 21:55:39.043 ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
20:55:39 21:55:39.043 DEBUG: Execution getVersion
20:55:39 21:55:39.044 DEBUG: Execution stop

Properties file:

sonar.projectKey=com.sunrise.messengers.em.raf
sonar.projectName=Enterprise Manager (RAF)
sonar.host.url=http://10.156.43.64:80
sonar.coverage.jacoco.xmlReportPaths=../../out.xml

#Disable SCM Blame Analsysis
sonar.scm.disabled=true

# Encoding of the source code
sonar.sourceEncoding=UTF-8

# Additional parameters
# sonar.my.property=value
# sonar.analysis.mode one of analysis preview incremental
sonar.analysis.mode=publish

# Some properties that will be inherited by the modules
sonar.language=java

#Generate test reports
sonar.issuesReport.console.enable=true
sonar.issuesReport.html.enable=true

#sonar.skipPackageDesign=true
#sonar.skipDesign=true

#Logging debug mode for debugging
sonar.verbose=true

# List of the module identifiers
sonar.modules=EmtEjbTierUtils,EmtWeb,RM,EMA

# Properties can obviously be overriden for
# each module - just prefix them with the module ID
EmtEjbTierUtils.sonar.projectName=EmtEjbTierUtils
EmtEjbTierUtils.sonar.projectBaseDir=emt/emtEjbTierUtils
EmtEjbTierUtils.sonar.java.binaries=build/classes/main
EmtEjbTierUtils.sonar.java.test.binaries=build/classes/test
EmtEjbTierUtils.sonar.java.libraries=../build/libs/*.jar
EmtEjbTierUtils.sonar.sources=src/main/java
EmtEjbTierUtils.sonar.tests=src/test/java

EmtWeb.sonar.projectName=EmtWeb
EmtWeb.sonar.projectBaseDir=emt/emt_web
EmtWeb.sonar.java.binaries=build/classes/main
EmtWeb.sonar.java.test.binaries=build/classes/test
EmtWeb.sonar.java.libraries=../build/libs/*.jar
EmtWeb.sonar.sources=src/main/java
EmtWeb.sonar.tests=src/test/java

RM.sonar.projectName=RM
RM.sonar.projectBaseDir=mt/RM
RM.sonar.java.binaries=build/classes/main
RM.sonar.java.test.binaries=build/classes/java/test
RM.sonar.java.libraries=../build/libs/*.jar
RM.sonar.sources=src/main/java
RM.sonar.tests=src/test/java

EMA.sonar.projectName=EMA
EMA.sonar.projectBaseDir=ema/emaShared
EMA.sonar.java.binaries=build/classes/main/
EMA.sonar.java.test.binaries=build/classes/test
EMA.sonar.java.libraries=../build/libs/*.jar
EMA.sonar.sources=src/main/java
EMA.sonar.tests=src/test/java

Hi,

Welcome to the community!

You seem to be analyzing a multi-module Java project with the vanilla SonarScanner. What’s your build technology? If it’s Gradle or Maven, I urge you to switch to the specific scanner for your technology. It will a) save you a lot of configuration and b) properly and automatically handle your modules for you. And in the process it will very likely eliminate the error you’re facing.

 
HTH,
Ann

Hi Ann,

We use Gradle. I’ll look into using the Gradle version of the scanner for this.

Thanks for your help!

1 Like