Getting error for sonarcloud task in ADO with java 17

  • ALM used: GitHub

  • CI system used: Azure DevOps
    INFO: SonarScanner 4.8.1.3023
    INFO: Java 17.0.7 Eclipse Adoptium (64-bit)
    INFO: Linux 5.15.0-1041-azure amd64

  • Task Azure Devops `SonarCloudAnalyze@1

  • Languages of the repository

    • Ruby
  • Error observed

Sonar cloud analysis task is failing with the following error:


 ##[error]java.io.IOException: Resource not found: "org/joda/time/tz/data/ZoneInfoMap" ClassLoader: ClassRealm{ruby}
2023-11-17T22:18:45.4559927Z java.io.IOException: Resource not found: "org/joda/time/tz/data/ZoneInfoMap" ClassLoader: ClassRealm{ruby}
2023-11-17T22:18:45.4564222Z ##[error]at org.joda.time.tz.ZoneInfoProvider.openResource(ZoneInfoProvider.java:225)
at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:138)
	at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:97)
	at org.joda.time.DateTimeZone.getDefaultProvider(DateTimeZone.java:555)
	at org.joda.time.DateTimeZone.getProvider(DateTimeZone.java:449)
	at org.joda.time.DateTimeZone.forID(DateTimeZone.java:234)
	at org.joda.time.DateTimeZone.getDefault(DateTimeZone.java:169)
	at org.joda.time.chrono.ISOChronology.getInstance(ISOChronology.java:79)
	at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:97)
	at org.joda.time.DateTime.<init>(DateTime.java:209)
	at org.jruby.util.log.OutputStreamLogger.formatMessage(OutputStreamLogger.java:146)
	at org.jruby.util.log.StandardErrorLogger.write(StandardErrorLogger.java:58)
	at org.jruby.util.log.OutputStreamLogger.warn(OutputStreamLogger.java:67)
	at org.jruby.util.io.FilenoUtil$ReflectiveAccess.<clinit>(FilenoUtil.java:278)
	at org.jruby.util.io.FilenoUtil.getFilenoUsingReflection(FilenoUtil.java:143)
	at org.jruby.util.io.FilenoUtil.filenoFrom(FilenoUtil.java:139)
	at org.jruby.util.io.ChannelFD.initFileno(ChannelFD.java:51)
	at org.jruby.util.io.ChannelFD.<init>(ChannelFD.java:37)
	at org.jruby.util.io.ChannelFD.<init>(ChannelFD.java:47)
	at org.jruby.util.io.OpenFile.setChannel(OpenFile.java:195)
	at org.jruby.RubyIO.prepIO(RubyIO.java:263)
	at org.jruby.RubyIO.prepStdio(RubyIO.java:192)
##[error]at org.jruby.RubyGlobal.initSTDIO(RubyGlobal.java:314)
	at org.jruby.RubyGlobal.createGlobals(RubyGlobal.java:228)
	at org.jruby.Ruby.<init>(Ruby.java:513)
	at org.jruby.Ruby.newInstance(Ruby.java:716)
	at org.jruby.javasupport.JavaEmbedUtils.initialize(JavaEmbedUtils.java:79)
	at org.jruby.javasupport.JavaEmbedUtils.initialize(JavaEmbedUtils.java:69)
	at org.sonarsource.ruby.converter.RubyConverter.initializeRubyRuntime(RubyConverter.java:182)
	at org.sonarsource.ruby.converter.RubyConverter.<init>(RubyConverter.java:75)
	at org.sonarsource.ruby.converter.RubyConverter.<init>(RubyConverter.java:82)
	at org.sonarsource.ruby.plugin.RubySensor.astConverter(RubySensor.java:45)
	at org.sonarsource.slang.plugin.SlangSensor.execute(SlangSensor.java:201)
	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:62)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:75)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:48)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:66)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:48)
	at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:64)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:180)
##[error]at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:176)
	at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:147)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.scanner.bootstrap.ScannerContainer.doAfterStart(ScannerContainer.java:398)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:128)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:57)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:51)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)##[error]at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at jdk.proxy1/jdk.proxy1.$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:126)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:81)
	at org.sonarsource.scanner.cli.Main.main(Main.java:62)



 ##[error][main] WARN FilenoUtil : Native subprocess control requires open access to the JDK IO subsystem
Pass '--add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED' to enable.

Hey there.

Could you try this solution, setting the SONAR_SCANNER_OPTS environment variable in your pipeline?

I tried that solution but still getting the same error,

this is the way I provided the env variable in the sonarcloud task of pipeline yaml

  • task: SonarSource.sonarcloud.14d9cde6-c1da-4d55-aa01-2965cd301255.SonarCloudPrepare@1
    displayName: ‘Prepare analysis on SonarCloud’
    inputs:
    SonarCloud: “sonarcloud”
    organization: "***"
    scannerMode: ‘CLI’
    configMode: manual
    cliProjectKey: “"
    cliProjectName: "
    ***”
    SONAR_SCANNER_OPTS: “–add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED”
    extraProperties: |
    sonar.exclusions=spec/

    -X

and also tried the same variable under analyze task also

  • task: SonarSource.sonarcloud.ce096e50-6155-4de8-8800-4221aaeed4a1.SonarCloudAnalyze@1
    displayName: ‘Run Code Analysis’
    SONAR_SCANNER_OPTS: “–add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED”

ok. looks like its working if we add the variable in the pipeline level instead of task level. but I need to check the analysis report generated by both Java versions.