day*_*mer 0 java logging slf4j
我有一个项目结构为
myproject/
moduleA/
moduleB/
moduleC/
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
现在moduleC需要moduleB代码,因此它将依赖项引用为
<dependency>
<groupId>com.org.myproject</groupId>
<artifactId>moduleB</artifactId>
<version>${project.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但是当我执行课程时moduleC,它会抱怨
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
......
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
Run Code Online (Sandbox Code Playgroud)
当我的moduleC类执行moduleB代码时会发生这种情况
我做错了什么?我怎样才能解决这个问题?
您将依赖项设置为"已提供",这意味着它们不会包含在运行时类路径中.您基本上告诉Maven您将在运行时提供这些文件,因此它们可用于编译,但除非您将它们手动放入类路径中,否则它们将在您运行时不在那里.
请查看此处:http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope ,了解有关每个范围级别的更多信息.
如果您没有指定任何内容,那么范围将是编译:
编译是默认范围,如果未指定,则使用.编译依赖项在项目的所有类路径中都可用.此外,这些依赖项将传播到依赖项目.
因此,您可以省略scope标记或将其显式添加为compile,当您运行应用程序时,依赖项将包含在运行时类路径中.
| 归档时间: |
|
| 查看次数: |
4119 次 |
| 最近记录: |