java.lang.NoClassDefFoundError:grizzled / slf4j / Logger

时间:2015-03-17 12:21:20

标签: scala maven logging

我在scala中执行一个项目,并在运行构建jar时遇到以下错误。它在Intellij Idea中运行良好 这是一个maven项目,包含以下依赖关系以进行日志记录

首先,我尝试使用scala-logging并最终出现同样的错误。

然后尝试用灰白色的同样的错误发生了。

<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>

发生错误如下

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)

请帮助解决问题。

谢谢, 拉胡

1 个答案:

答案 0 :(得分:1)

当生成的依赖关系树包含同一工件的不同版本时,可能会发生这样的错误。

在你的情况下:

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

取决于

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

但是,您还可以使用1.7.10

因此,请尝试将slf4j-api版本从1.7.10更改为1.7.7