【问题标题】:Slf4j and Logback error: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactorySlf4j 和 Logback 错误:java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
【发布时间】:2021-04-04 09:06:59
【问题描述】:

我正在开发一个简单的 Java 应用程序,我没有使用任何市长框架,只使用 maven 进行构建和依赖管理,Lombok 避免样板文件和 sfl4j 和 Logback 用于日志记录职责。当我直接通过 IntelliJ IDE 运行应用程序时,它运行良好,但是当我尝试从命令行运行 maven 生成的 jar 文件时,我收到错误 java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory。

我的 maven pom 如下所示:

<dependencies>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>1.2.3</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.30</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
    </dependency>
    ...

有什么想法吗?

【问题讨论】:

  • 您是如何创建 Jar 文件、设置 manifest.mf 和设置运行时类路径的?除非您要创建一个包含所有库依赖项的“胖 jar”,否则您需要为其他 jar 依赖项设置类路径

标签: java maven logback slf4j


【解决方案1】:

我认为您生成的 jar 文件不包含您的依赖项。

为了在生成的jar文件中添加依赖,我使用了ma​​ven-assembly-plugin maven plugin

<build>
<plugins>
  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
      <archive>
        <manifest>
          <mainClass>**your main class**</mainClass>
        </manifest>
      </archive>
    </configuration>
  </plugin>
</plugins>
</build>

希望对你有用

【讨论】:

    猜你喜欢
    • 2016-04-20
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多