Rahul Dev
Rahul Dev

Reputation: 397

java.lang.NoClassDefFoundError: grizzled/slf4j/Logger

I am doing a project in scala and getting the following error when i run the build jar. It is working fine in Intellij Idea This is a maven project and have included the following dependencies for logging

First i tried with scala-logging and ended up with same sort of error.

Then tried with grizzled same error occurred.

<dependencies>
<dependency>
  <groupId>org.scala-lang</groupId>
  <artifactId>scala-library</artifactId>
  <version>${scala.version}</version>
</dependency>
  <dependency>
      <groupId>io.spray</groupId>
      <artifactId>spray-io</artifactId>
      <version>${spray.version}</version>
  </dependency>
  <dependency>
      <groupId>io.spray</groupId>
      <artifactId>spray-routing</artifactId>
      <version>${spray.version}</version>
  </dependency>
  <dependency>
      <groupId>io.spray</groupId>
      <artifactId>spray-httpx</artifactId>
      <version>${spray.version}</version>
  </dependency>
  <dependency>
      <groupId>io.spray</groupId>
      <artifactId>spray-json_${scala.base}</artifactId>
      <version>${spray.version}</version>
  </dependency>
  <dependency>
      <groupId>io.spray</groupId>
      <artifactId>spray-client</artifactId>
      <version>${spray.version}</version>
  </dependency>
  <dependency>
      <groupId>org.json4s</groupId>
      <artifactId>json4s-native_${scala.base}</artifactId>
      <version>3.2.11</version>
  </dependency>
  <dependency>
      <groupId>com.typesafe.akka</groupId>
      <artifactId>akka-actor_${scala.base}</artifactId>
      <version>${akka.version}</version>
  </dependency>
  <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.1.2</version>
  </dependency>
  <dependency>
      <groupId>com.typesafe.slick</groupId>
      <artifactId>slick_${scala.base}</artifactId>
      <version>${slick.version}</version>
  </dependency>
  <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>${logback.version}</version>
  </dependency>
  <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>${logback.version}</version>
  </dependency>
  <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
  </dependency>
  <dependency>
      <groupId>postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>9.1-901.jdbc4</version>
  </dependency>
  <dependency>
      <groupId>org.clapper</groupId>
      <artifactId>grizzled-slf4j_${scala.base}</artifactId>
      <version>1.0.2</version>
  </dependency>
  <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-core</artifactId>
      <version>2.9.4</version>
  </dependency>

Error occurred is as follows

Exception in thread "main" java.lang.NoClassDefFoundError: grizzled/slf4j/Logger
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.privateGetMethodRecursive(Unknown Source)
    at java.lang.Class.getMethod0(Unknown Source)
    at java.lang.Class.getMethod(Unknown Source)
    at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: grizzled.slf4j.Logger
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)

Please help in sorting out the issue.

Thanks, Rahul

Upvotes: 1

Views: 1365

Answers (1)

skozlov
skozlov

Reputation: 414

Errors like this can occur when the resulting dependency tree contains different versions of the same artifact.

In your case:

<groupId>org.clapper</groupId>
<artifactId>grizzled-slf4j_2.10</artifactId>
<version>1.0.2</version>

depends on

<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>

but you, in addition, use 1.7.10.

So try to change slf4j-api version from 1.7.10 to 1.7.7

Upvotes: 1

Related Questions