我正在尝试运行给定here的示例切片示例。
下面是我的POM.xml:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-api</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-core</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.2</version>
</dependency>
当我尝试运行该示例时,会抛出以下错误:
Sep 17, 2010 11:59:43 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.apache.tiles.web.startup.TilesListener
java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
at org.apache.tiles.web.startup.TilesListener.<init>(TilesListener.java:49)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
有什么想法吗?
我花了30分钟谷歌搜索,但找不到可能的溶剂。
请帮帮我......
答案 0 :(得分:107)
您已经在SLF4J API中包含了一个依赖项,这是您在应用程序中用于日志记录的依赖项,但您还必须包含执行真正日志记录工作的实现。
例如,要记录Log4J,您将添加此依赖项:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.2</version>
</dependency>
建议的实现是logback-classic,这是Log4j的继承者,由制作SLF4J和Log4J的同一个人制作:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.24</version>
</dependency>
注意:版本可能不正确。
答案 1 :(得分:10)
你已经包含了sflj api的依赖项,但没有包含api实现的依赖项,这是一个单独的jar,你可以试试slf4j-simple-1.6.1.jar。
答案 2 :(得分:1)
我在使用hibernate时遇到了同样的错误,我在我的pom.xml中添加了以下依赖项来解决问题
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.10</version>
</dependency>
答案 3 :(得分:0)
将主文件夹.iml文件的所有订单条目复制到/src/main/main.iml文件中。 这将解决问题。
答案 4 :(得分:0)
确保 SL4J 版本一致性的一个好做法是将版本集中在这样的属性中:
...
<properties>
<org.slf4j.version>1.5.2</org.slf4j.version><!-- SLF4J release -->
</properties>
...
<dependencies>
<!-- SL4J with LOG4J implementation -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j.version}</version>
</dependency>
...