49

我正在尝试运行此处给出的示例图块示例。

下面是我的 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 分钟在谷歌上搜索,但找不到可能的解决方案。

请帮我...

4

6 回答 6

119

您已经包含了对 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>

注意:版本可能不正确。

于 2010-09-17T18:42:23.370 回答
12

您已经包含了 sflj 的 api 的依赖项,但没有包含 api 实现的依赖项,这是一个单独的 jar,您可以尝试 slf4j-simple-1.6.1.jar。

于 2010-09-17T18:41:24.437 回答
1

将所有 tile jar (如(tiles-jsp,tiles-servlet,tiles-template,tiles-extras.tiles-core)添加到您的服务器 lib 文件夹和应用程序构建路径,然后如果您将 apache tailes 与 spring mvc 应用程序一起使用,它就可以工作

于 2015-05-02T04:42:03.213 回答
0

将主文件夹 .iml 文件的所有订单条目复制到 /src/main/main.iml 文件中。这将解决问题。

于 2017-06-03T12:47:15.380 回答
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>
...
于 2021-03-31T06:57:36.710 回答
0

我在使用休眠时遇到了同样的错误,我在我的 pom.xml 中添加了以下依赖项来解决问题

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.10</version>
    </dependency>

参考 https://mvnrepository.com/artifact/org.slf4j/slf4j-api

于 2018-05-14T01:00:47.083 回答