java.lang.IllegalStateException: No files nor directories matching

Evaluating SonarLint with VS Code Java project. Everything builds and runs successfully at the command line with Gradle, and from within VS Code. Not seeing any SL suggestions in VS Code though; checking SL output window shows the error below; any ideas? Thanks!

Update: Tried the same project using the Eclipse plugin and everything worked as expected. So this seems to be an issue with the VS Code plugin specifically at this point?

Update #2: I restarted Eclipse and now I’m no longer getting any SonarLint issues reported, even after explicitly analyzing all project files using the context menu. I can’t find an equivalent to the VS Code “Show SonarLint output” feature though so I’m not sure if it’s the same issue.

[Error - 14:32:20.368] java.lang.IllegalStateException: No files nor directories matching '\idmp-local-client\bin\default'
at org.sonar.java.classpath.AbstractClasspath.getFilesFromProperty(AbstractClasspath.java:129)
at org.sonar.java.classpath.ClasspathForMain.init(ClasspathForMain.java:61)
at org.sonar.java.classpath.AbstractClasspath.getElements(AbstractClasspath.java:317)
at org.sonar.java.SonarComponents.getJavaClasspath(SonarComponents.java:164)
at org.sonar.java.JavaSquid.<init>(JavaSquid.java:86)
at org.sonar.plugins.java.JavaSquidSensor.execute(JavaSquidSensor.java:100)
at org.sonarsource.sonarlint.core.analyzer.sensor.SensorsExecutor.executeSensor(SensorsExecutor.java:80)
at org.sonarsource.sonarlint.core.analyzer.sensor.SensorsExecutor.execute(SensorsExecutor.java:71)
at org.sonarsource.sonarlint.core.container.analysis.AnalysisContainer.doAfterStart(AnalysisContainer.java:132)
at org.sonarsource.sonarlint.core.container.ComponentContainer.startComponents(ComponentContainer.java:126)
at org.sonarsource.sonarlint.core.container.ComponentContainer.execute(ComponentContainer.java:111)
at org.sonarsource.sonarlint.core.container.standalone.StandaloneGlobalContainer.analyze(StandaloneGlobalContainer.java:153)
at org.sonarsource.sonarlint.core.StandaloneSonarLintEngineImpl.analyze(StandaloneSonarLintEngineImpl.java:90)
at org.sonarsource.sonarlint.ls.AnalysisManager.lambda$analyzeStandalone$8(AnalysisManager.java:371)
at org.sonarsource.sonarlint.ls.AnalysisManager.analyzeWithTiming(AnalysisManager.java:422)
at org.sonarsource.sonarlint.ls.AnalysisManager.analyzeStandalone(AnalysisManager.java:371)
at org.sonarsource.sonarlint.ls.AnalysisManager.analyze(AnalysisManager.java:266)
at org.sonarsource.sonarlint.ls.AnalysisManager.lambda$analyzeAsync$0(AnalysisManager.java:224)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)

Hello, thank you for your report.

On the VSCode side, could you please enable both sonarlint.output.showVerboseLogs and sonarlint.output.showAnalyzerLogs in your user settings, trigger a new analysis and post the contents of the “SonarLint” output?

On the Eclipse side, you’ll want to check the SonarLint Console - “Window” > “Show view” > “Console”, then select the SonarLint console:

If I understand correctly the exception that you posted, it looks like the Java language server feeds SonarLint with a classpath entry - \idmp-local-client\bin\default - that cannot be found by SonarLint’s Java analyzer; I would be curious to see how this happens, e.g if you are using UNC paths that are somehow not handled properly.

VS Code log output is below. In case it’s helpful, I also pushed a minimal reproduction case to GitHub here: https://github.com/starkos/sonarlint-example.git

Executing C:\Program Files\Java\jdk-11.0.10\bin\java -jar c:\Users\Jason\.vscode\extensions\sonarsource.sonarlint-vscode-1.21.0\server\sonarlint-ls.jar 62196 file:///c:/Users/Jason/.vscode/extensions/sonarsource.sonarlint-vscode-1.21.0/analyzers/sonarjava.jar file:///c:/Users/Jason/.vscode/extensions/sonarsource.sonarlint-vscode-1.21.0/analyzers/sonarjs.jar file:///c:/Users/Jason/.vscode/extensions/sonarsource.sonarlint-vscode-1.21.0/analyzers/sonarphp.jar file:///c:/Users/Jason/.vscode/extensions/sonarsource.sonarlint-vscode-1.21.0/analyzers/sonarpython.jar file:///c:/Users/Jason/.vscode/extensions/sonarsource.sonarlint-vscode-1.21.0/analyzers/sonarhtml.jar
[stdout] Binding to 62196
Child process connected on port 62196
[stderr] SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
[stderr] SLF4J: Defaulting to no-operation (NOP) logger implementation
[stderr] SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[Info  - 13:20:53.280] Started security hotspot handler on port 64121
[Debug - 13:20:53.386] Default settings updated: WorkspaceFolderSettings[analyzerProperties={},testFilePattern=,connectionId=<null>,projectKey=<null>]
[Debug - 13:20:53.419] Cached Java config for file 'file:///c:/Users/Jason/Projects/idmp3-3/client/cli/src/main/java/client/CliMain.java'
[Info  - 13:20:53.430] Analyzing file 'file:///c:/Users/Jason/Projects/idmp3-3/client/cli/src/main/java/client/CliMain.java'...
[Debug - 13:20:53.448] Analysis triggered on 'file:///c:/Users/Jason/Projects/idmp3-3/client/cli/src/main/java/client/CliMain.java' with configuration: 
[
baseDir: c:\Users\Jason\Projects\idmp3-3
extraProperties: {sonar.java.source=11, sonar.java.libraries=C:\Program Files\Java\jdk-11.0.10\lib\jrt-fs.jar,C:\Users\Jason\Projects\idmp3-3\client\cli\bin\main,\idmp-core\bin\default,C:\Users\Jason\Projects\idmp3-3\idmp\idmp-core\bin\main}
excludedRules: []
includedRules: []
ruleParameters: {}
inputFiles: [
    file:///c:/Users/Jason/Projects/idmp3-3/client/cli/src/main/java/client/CliMain.java (UTF-8) [java]
]
]

[Debug - 13:20:53.449] Starting standalone SonarLint engine...
[Debug - 13:20:53.453] Using 5 analyzers
[Debug - 13:20:53.455] Looking for node in the PATH
[Debug - 13:20:53.460] Execute command 'where node'...
[Debug - 13:20:53.568] Command 'where node' exited with 1
stderr: INFO: Could not find files for the given pattern(s).
[Debug - 13:20:53.568] Unable to locate node
[Debug - 13:20:53.634] Create : C:\Users\Jason\.sonarlint\plugins
[Debug - 13:20:53.635] Plugin cache: C:\Users\Jason\.sonarlint\plugins
[Debug - 13:20:53.635] Create : C:\Users\Jason\.sonarlint\plugins\_tmp
[Debug - 13:20:53.763] Load plugins
[Debug - 13:20:53.779] Plugin 'JavaScript/TypeScript Code Quality and Security' requires Node.js 8.0.0. Skip loading it.
[Debug - 13:20:53.785] Load plugins (done) | time=22ms
[Debug - 13:20:53.813] Plugins:
[Debug - 13:20:53.813]   * Python Code Quality and Security 3.3.0.7945 (python)
[Debug - 13:20:53.814]   * Java Code Quality and Security 6.13.0.25138 (java)
[Debug - 13:20:53.814]   * HTML Code Quality and Security 3.3.0.2534 (web)
[Debug - 13:20:53.814]   * PHP Code Quality and Security 3.15.0.7197 (php)
[Debug - 13:20:54.915] Standalone SonarLint engine started
[Debug - 13:20:54.959] Start analysis
[Info  - 13:20:54.974] Index files
[Debug - 13:20:54.979] Language of file 'file:///c:/Users/Jason/Projects/idmp3-3/client/cli/src/main/java/client/CliMain.java' is set to 'Java'
[Info  - 13:20:54.984] 1 file indexed
[Debug - 13:20:55.360] Execute Sensor: JavaSquidSensor
[Info  - 13:20:55.524] Configured Java source version (sonar.java.source): 11
[Info  - 13:20:55.529] JavaClasspath initialization
[Debug - 13:20:55.536] Property 'sonar.java.jdkHome' resolved with:
[]
[Error - 13:20:55.539] Invalid value for 'sonar.java.libraries' property.
[Error - 13:20:55.540] Analysis failed.
[Error - 13:20:55.541] java.lang.IllegalStateException: No files nor directories matching '\idmp-core\bin\default'
    at org.sonar.java.classpath.AbstractClasspath.getFilesFromProperty(AbstractClasspath.java:129)
    at org.sonar.java.classpath.ClasspathForMain.init(ClasspathForMain.java:61)
    at org.sonar.java.classpath.AbstractClasspath.getElements(AbstractClasspath.java:317)
    at org.sonar.java.SonarComponents.getJavaClasspath(SonarComponents.java:164)
    at org.sonar.java.JavaSquid.<init>(JavaSquid.java:86)
    at org.sonar.plugins.java.JavaSquidSensor.execute(JavaSquidSensor.java:100)
    at org.sonarsource.sonarlint.core.analyzer.sensor.SensorsExecutor.executeSensor(SensorsExecutor.java:80)
    at org.sonarsource.sonarlint.core.analyzer.sensor.SensorsExecutor.execute(SensorsExecutor.java:71)
    at org.sonarsource.sonarlint.core.container.analysis.AnalysisContainer.doAfterStart(AnalysisContainer.java:132)
    at org.sonarsource.sonarlint.core.container.ComponentContainer.startComponents(ComponentContainer.java:126)
    at org.sonarsource.sonarlint.core.container.ComponentContainer.execute(ComponentContainer.java:111)
    at org.sonarsource.sonarlint.core.container.standalone.StandaloneGlobalContainer.analyze(StandaloneGlobalContainer.java:153)
    at org.sonarsource.sonarlint.core.StandaloneSonarLintEngineImpl.analyze(StandaloneSonarLintEngineImpl.java:90)
    at org.sonarsource.sonarlint.ls.AnalysisManager.lambda$analyzeStandalone$8(AnalysisManager.java:371)
    at org.sonarsource.sonarlint.ls.AnalysisManager.analyzeWithTiming(AnalysisManager.java:422)
    at org.sonarsource.sonarlint.ls.AnalysisManager.analyzeStandalone(AnalysisManager.java:371)
    at org.sonarsource.sonarlint.ls.AnalysisManager.analyze(AnalysisManager.java:266)
    at org.sonarsource.sonarlint.ls.AnalysisManager.lambda$analyzeAsync$0(AnalysisManager.java:224)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)

[Info  - 13:20:55.541] Found 0 issues
1 Like

Thank you :100: times for the reproducer, I was able to reproduce this issue just by cloning and opening the project in VSCode!

We will take a closer look and try to understand the root cause.

After a bit of investigation, it seems that the classpath resolution somehow returns a path that does not exist on the local file system, in this case \idmp-core\bin\default.

I believe this is a bug in the underlying resolution service, and we will notify upstream.

I also believe that SonarLint could be more resilient to this kind of bug, and I created a ticket that we will address as part of the next release.

Unfortunately I don’t see an easy workaround for VSCode. Please note that Eclipse and IntelliJ do not seem to be impacted by this issue (at least not with the reproducer project).

Thanks again for reporting!