Issue when trying to configure binding with remote server after a previous unresponsive configuration

If you had a previous configuration of Sonar Qube done in Sonar Lint in your IDE(IntelliJ2019.3), there is the off-chance that you might get a java error from the plugin when trying to configure a new server or after selecting the configured one that does not respond anymore, leaving you without any possibility of configuring a different server, because the window for configuring server no longer opens. Uninstalling the plugin will not remove the configured servers. Here are the versions:

Sonar Qube Version 6.7.6 (build 38781)
Sonar Lint v4.0.2.3009
IntelliJ IDEA 2019.3

Error log from IntelliJ:

java.lang.NoClassDefFoundError: org/sonar/api/batch/AbstractCpdMapping
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
	at org.sonar.classloader.ClassRealm.loadClassFromSelf(ClassRealm.java:125)
	at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:37)
	at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87)
	at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76)
	at com.villagechief.sonar.salesforce.SalesForcePlugin.getExtensions(SalesForcePlugin.java:110)
	at org.sonar.api.SonarPlugin.define(SonarPlugin.java:51)
	at org.sonarsource.sonarlint.core.container.global.ExtensionInstaller.install(ExtensionInstaller.java:62)
	at org.sonarsource.sonarlint.core.container.global.GlobalExtensionContainer.doBeforeStart(GlobalExtensionContainer.java:35)
	at org.sonarsource.sonarlint.core.container.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonarsource.sonarlint.core.container.storage.StorageContainer.doAfterStart(StorageContainer.java:126)
	at org.sonarsource.sonarlint.core.container.ComponentContainer.startComponents(ComponentContainer.java:125)
	at org.sonarsource.sonarlint.core.ConnectedSonarLintEngineImpl.start(ConnectedSonarLintEngineImpl.java:118)
	at org.sonarsource.sonarlint.core.ConnectedSonarLintEngineImpl.<init>(ConnectedSonarLintEngineImpl.java:77)
	at org.sonarlint.intellij.core.SonarLintEngineFactory.createEngine(SonarLintEngineFactory.java:65)
	at org.sonarlint.intellij.core.SonarLintEngineManager.getConnectedEngine(SonarLintEngineManager.java:110)
	at org.sonarlint.intellij.core.SonarLintEngineManager.getConnectedEngine(SonarLintEngineManager.java:134)
	at org.sonarlint.intellij.core.ProjectBindingManager.getFacade(ProjectBindingManager.java:73)
	at org.sonarlint.intellij.core.ProjectBindingManager.getFacade(ProjectBindingManager.java:61)
	at org.sonarlint.intellij.trigger.SonarLintSubmitter.filterAndGetByModule(SonarLintSubmitter.java:136)
	at org.sonarlint.intellij.trigger.SonarLintSubmitter.submitFiles(SonarLintSubmitter.java:119)
	at org.sonarlint.intellij.trigger.SonarLintSubmitter.submitFiles(SonarLintSubmitter.java:113)
	at org.sonarlint.intellij.trigger.EditorOpenTrigger.afterStartup(EditorOpenTrigger.java:53)
	at com.intellij.ide.startup.impl.StartupManagerImpl.runActivity(StartupManagerImpl.java:360)
	at com.intellij.ide.startup.impl.StartupManagerImpl.lambda$queueSmartModeActivity$3(StartupManagerImpl.java:166)
	at com.intellij.openapi.project.DumbServiceImpl.lambda$runWhenSmart$0(DumbServiceImpl.java:232)
	at com.intellij.ide.startup.impl.StartupManagerImpl.lambda$runWhenProjectIsInitialized$6(StartupManagerImpl.java:392)
	at com.intellij.ui.GuiUtils.invokeLaterIfNeeded(GuiUtils.java:377)
	at com.intellij.ide.startup.impl.StartupManagerImpl.runWhenProjectIsInitialized(StartupManagerImpl.java:394)
	at com.intellij.openapi.project.DumbServiceImpl.runWhenSmart(DumbServiceImpl.java:224)
	at com.intellij.ide.startup.impl.StartupManagerImpl.queueSmartModeActivity(StartupManagerImpl.java:166)
	at com.intellij.ide.startup.impl.StartupManagerImpl.access$400(StartupManagerImpl.java:48)
	at com.intellij.ide.startup.impl.StartupManagerImpl$1.lambda$run$0(StartupManagerImpl.java:196)
	at java.util.ArrayList.forEach(ArrayList.java:1257)
	at com.intellij.ide.startup.impl.StartupManagerImpl$1.run(StartupManagerImpl.java:196)
	at com.intellij.openapi.project.DumbServiceImpl.doRun(DumbServiceImpl.java:380)
	at com.intellij.openapi.project.DumbServiceImpl.updateFinished(DumbServiceImpl.java:372)
	at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:88)
	at com.intellij.openapi.application.TransactionGuardImpl.lambda$pollQueueLater$0(TransactionGuardImpl.java:74)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:435)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:419)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:403)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
	at java.awt.EventQueue.access$500(EventQueue.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:715)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:729)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:678)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:373)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ClassNotFoundException: org.sonar.api.batch.AbstractCpdMapping
	at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:39)
	at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87)
	at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76)
	... 67 more

How to reproduce:
I am not sure, but I had previously configured a remote server with a token, the server was still up, but some configurations changed on it or maybe the token was removed. When I tried to configure a new server with a new token I was not able to open the configure servers window anymore.

Workaround:

  • uninstall the Sonar Lint plugin
  • close the IDE
  • remove the “sonarlint” folder from the following path “~/Library/Preferences/IntelliJIdea2019.1/”
  • also remove ~Library/Preferences/IntelliJIdea2019.1/options/sonarlint.xml
  • not sure if required but I also removed the plugin cache, which is in “~/Library/Caches/IntelliJIdea2019.1/plugins/”
  • install the plugin back and configure the new server

Hello, sorry for the late answer.

This issue should be fixed in recent versions of SonarLint for IntelliJ, please do not hesitate to bump this thread if the issue still exists.