【发布时间】:2012-09-17 23:26:13
【问题描述】:
我有一个项目结构为
myproject/
moduleA/
moduleB/
moduleC/
myproject 具有pom.xml
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.3</version>
<scope>provided</scope>
</dependency>
现在moduleC 需要moduleB 代码,因此它将依赖项引用为
<dependency>
<groupId>com.org.myproject</groupId>
<artifactId>moduleB</artifactId>
<version>${project.version}</version>
</dependency>
但是当我在moduleC 中执行课程时,它会抱怨
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
......
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
当我的 moduleC 类执行 moduleB 代码时会发生这种情况。
我做错了什么?我该如何解决这个问题?
【问题讨论】:
-
如何打包二进制文件以及如何执行它们?给定的
pom.xml仅描述了编译时依赖项——而不是二进制文件的打包方式。错误消息通常是类路径问题。所以JVM在classpath上找不到LoggerFactory类的logback实现。