Search code examples
sonarqubesonar-runner

Sonar runner fails in dryRun mode with java.lang.NoClassDefFoundError


I am attempting to perform a dry run analysis of an existing project with Sonar Runner but it keeps failing with a java.lang.NoClassDefFoundError. I've tried setting sonar.dryRun.excludePlugins=emailnotifications but this does not fix the issue.

My Sonar version is 3.7.4 with Sonar Runner 2.3

Here is my sonar-project.properties:

sonar.projectKey=com.example.company:testproject
sonar.projectName=Test Project
sonar.projectVersion=1.0
sonar.projectDescription=
sonar.language=grvy
sonar.sources=src
sonar.projectBaseDir=.
sonar.sourceEncoding=UTF-8
sonar.dryRun=true

Here is the stack trace:

Java 1.7.0_25 Oracle Corporation (64-bit)
Linux 2.6.32-358.14.1.el6.x86_64 amd64
INFO: Error stacktraces are turned on.
INFO: Runner configuration file: /sonar-runner/conf/sonar-runner.properties
INFO: Project configuration file: /workspace/sonar-project.properties
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: Work directory: /workspace/.sonar
INFO: SonarQube Server 3.7.4
09:44:21.156 INFO  - Load batch settings
09:44:21.224 INFO  - User cache: /home/user/.sonar/cache
09:44:21.228 INFO  - Install plugins
09:44:21.234 INFO  - Include plugins: buildbreaker
09:44:21.234 INFO  - Exclude plugins: devcockpit, jira, pdfreport, views, report, scmactivity
09:44:21.268 INFO  - Dry run
09:44:23.401 INFO  - Create JDBC datasource for jdbc:h2:/tmp/sonar-    batch356768803600806905223669976472392009/dryrun
09:44:24.675 INFO  - Initializing Hibernate
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 5.528s
Final Memory: 8M/210M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
  at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
  at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
  at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
  at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
  at org.sonar.runner.api.Runner.execute(Runner.java:90)
  at org.sonar.runner.Main.executeTask(Main.java:70)
  at org.sonar.runner.Main.execute(Main.java:59)
  at org.sonar.runner.Main.main(Main.java:41)
Caused by: java.lang.NoClassDefFoundError: org/sonar/plugins/emailnotifications/api/EmailTemplate
  at java.lang.ClassLoader.defineClass1(Native Method)
  at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
  at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
  at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
  at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:386)
  at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
  at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
  at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
  at org.sonar.plugins.core.CorePlugin.getExtensions(CorePlugin.java:411)
  at org.sonar.batch.bootstrap.ExtensionInstaller.install(ExtensionInstaller.java:52)
  at org.sonar.batch.bootstrap.TaskContainer.installTaskExtensions(TaskContainer.java:56)
  at org.sonar.batch.bootstrap.TaskContainer.doBeforeStart(TaskContainer.java:45)
  at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:90)
  at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)
  at org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapContainer.java:156)
  at org.sonar.batch.bootstrap.BootstrapContainer.doAfterStart(BootstrapContainer.java:144)
  at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)
  at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)
  at org.sonar.batch.bootstrapper.Batch.startBatch(Batch.java:92)
  at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:74)
  at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:45)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:606)
  at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)
  ... 9 more
Caused by: java.lang.ClassNotFoundException: org.sonar.plugins.emailnotifications.api.EmailTemplate
  at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
  at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
  at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
  ... 40 more`

Solution

  • This plugin is a core plugin located in \lib\core-plugins, not a plugin that you can manage through the Update Center, as those located in \extensions\plugins. So I don't think you can exclude it from the sonar-project.properties.

    Normally, you should have this problem on all projects (under this SonarQube installation). Is that right ?

    Did it work before on this project or did you do something meanwhile, like installing a new version ?

    I would not be surprised if you had an incorrect version of that jar file. Maybe reinstalling it would work.

    Regards.