Java Tomcat maven插件-未能加载类;org.slf4j.impl.StaticLoggerBinder”的;

Java Tomcat maven插件-未能加载类;org.slf4j.impl.StaticLoggerBinder”的;,java,logging,tomcat7,slf4j,logback,Java,Logging,Tomcat7,Slf4j,Logback,当我在一个独立的tomcat容器中启动我的webapp时,我看到Flyway日志记录很好(如果找到它,它使用commons日志记录,而不是下面Axel所说的那样) 但是,当我使用apache tomcat maven插件(tomcat7 maven插件)时,我看到了以下内容: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger

当我在一个独立的tomcat容器中启动我的webapp时,我看到Flyway日志记录很好(如果找到它,它使用commons日志记录,而不是下面Axel所说的那样)

但是,当我使用apache tomcat maven插件(tomcat7 maven插件)时,我看到了以下内容:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
这里没什么特别的。以下是完整的代码:

public void contextInitialized(ServletContextEvent sce) {
    Flyway flyway = new Flyway();
    flyway.setDataSource(...);
    flyway.migrate();
}

<listener>
    <listener-class>com.blah.conf.FlywayListener</listener-class>
</listener>
以下是slf4j的依赖关系树:

mvn dependency:tree -Dverbose -Dincludes=org.slf4j
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ hello ---
[INFO] com.hello:hello:war:1.0-SNAPSHOT
[INFO] \- ch.qos.logback:logback-classic:jar:1.0.13:compile
[INFO]    \- org.slf4j:slf4j-api:jar:1.7.5:compile
所以我最新的问题是,为什么使用tomcat maven插件和单机版有区别?在临时部署的“目标”文件夹中,我没有看到任何其他JAR

更新:
添加jcl-over-slf4j后,问题消失了。

Flyway core logging的工作原理如下:如果找到commons logging,则使用它,否则使用System.out

如果您想要本机SLF4J支持,请在问题跟踪程序中提交功能请求


至于您的例外情况,它来自其他方面。

Flyway core日志记录的工作原理如下:如果找到commons日志记录,请使用它,否则请使用System.out

如果您想要本机SLF4J支持,请在问题跟踪程序中提交功能请求


至于您的异常,它来自其他方面。

此警告由tomcat7 maven插件发出

将插件声明为:

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.1</version>
  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
      <version>1.7.5</version>
    </dependency>
  </dependencies>
</plugin>

org.apache.tomcat.maven
tomcat7 maven插件
2.1
org.slf4j
slf4j简单
1.7.5

将向插件的类路径提供一个特定的日志绑定,使警告消失。

此警告由tomcat7 maven插件发出

将插件声明为:

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.1</version>
  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
      <version>1.7.5</version>
    </dependency>
  </dependencies>
</plugin>

org.apache.tomcat.maven
tomcat7 maven插件
2.1
org.slf4j
slf4j简单
1.7.5

将为插件的类路径提供特定的日志绑定,从而消除警告。

谢谢Axel。奇怪的是,SLF4J警告只有在我添加这三行Flyway代码时才会出现。如果我移除它们,警告就会消失——所以我认为是Flyway。我将尝试进一步缩小问题的范围。我缩小了问题的范围-简单的webapp,带有一个执行Flyway迁移的上下文侦听器。tomcat maven插件(tomcat7 maven插件)似乎是根本原因。我会更新这个问题。谢谢,谢谢你,阿克塞尔。奇怪的是,SLF4J警告只有在我添加这三行Flyway代码时才会出现。如果我移除它们,警告就会消失——所以我认为是Flyway。我将尝试进一步缩小问题的范围。我缩小了问题的范围-简单的webapp,带有一个执行Flyway迁移的上下文侦听器。tomcat maven插件(tomcat7 maven插件)似乎是根本原因。我会更新这个问题。谢谢。添加jcl-over-slf4j后,问题消失了。添加jcl-over-slf4j后,问题消失了。