我有一个专家项目,它使用slf4j和日志作为记录器。我可以看到这两个工件都在我的专家依赖关系树项中。但是每当我试图运行我的项目时,我都会不断收到提示:
SLF4J:加载类“org.SLF4J.impl.StaticLoggerBinder”失败。SLF4J:默认为无操作(NOP)记录器实现SLF4J:请参阅http://www.slf4j.org/codes.html#StaticLoggerBinder更多细节。
我查看链接,上面写着:
放置一个(且仅一个)slf4j nop。在jar中,slf4j很简单。jar、slf4j-log4j12.jar、slf4j-jdk14.jar或logback classic。类路径上的jar应该可以解决这个问题。
我已经将logback-classic添加到我的项目中(我使用的是1.0.9版本),但是我一直收到提示信息,我的日志无法运行。
有人能帮我解决这个问题吗?谢谢。
更新:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.employee.scheduler</groupId>
<artifactId>rostering</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>nurserostering</name>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!-- or whatever version you use -->
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<!-- Needed for runExamples.sh and runExamples.bat -->
<addClasspath>true</addClasspath>
<classpathPrefix>../../binaries/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<executable>java</executable>
<classpathScope>runtime</classpathScope>
<arguments>
<argument>-Xms256m</argument>
<argument>-Xmx1024m</argument>
<argument>-server</argument>
<argument>-cp</argument>
<classpath />
<argument>com.employee.scheduler.nurserostering.app.NurseRosteringApp</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>org.optaplanner</groupId>
<artifactId>optaplanner-core</artifactId>
<version>6.1.0.Final</version>
</dependency>
<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.optaplanner</groupId>
<artifactId>optaplanner-benchmark</artifactId>
<version>6.1.0.Final</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.9</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.9</version>
</dependency>
</dependencies>
这是我的logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2013 JBoss Inc
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<configuration>
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- %l lowers performance -->
<!--<pattern>%d [%t] %-5p %l%n %m%n</pattern>-->
<pattern>%d [%t] %-5p %m%n</pattern>
</encoder>
</appender>
<!--<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!--<file>local/log/optaplannerBenchmark.log</file>-->
<!--<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">-->
<!--<fileNamePattern>local/log/optaplannerBenchmark.%i.log.zip</fileNamePattern>-->
<!--<minIndex>1</minIndex>-->
<!--<maxIndex>3</maxIndex>-->
<!--</rollingPolicy>-->
<!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">-->
<!--<maxFileSize>5MB</maxFileSize>-->
<!--</triggeringPolicy>-->
<!--<encoder>-->
<!--<!– %l lowers performance –>-->
<!--<!–<pattern>%d [%t] %-5p %l%n %m%n</pattern>–>-->
<!--<pattern>%d [%t] %-5p %m%n</pattern>-->
<!--</encoder>-->
<!--</appender>-->
<logger name="org.optaplanner" level="debug"/>
<logger name="com.employee.scheduler" level="debug"/>
<root level="warn">
<appender-ref ref="consoleAppender" />
<!--<appender-ref ref="fileAppender" />-->
</root>
</configuration>
我如何在程序中使用它:
public class SolutionBusiness {
protected final transient Logger logger = LoggerFactory.getLogger(getClass());
// some other codes
public void doMove(Move move) {
if (solver.isSolving()) {
logger.error("Not doing user move ({}) because the solver is solving.", move);
return;
}
if (!move.isMoveDoable(guiScoreDirector)) {
logger.warn("Not doing user move ({}) because it is not doable.", move);
return;
}
logger.info("Doing user move ({}).", move);
move.doMove(guiScoreDirector);
}
}
这是我的maven依赖项:
只有当logback-经典或logback-核心不在类路径上时,您才能收到特定的错误消息。因为它们在您的maven依赖项(参见pom)和您的eclipse类路径(参见屏幕截图)中,这很奇怪。
首先,检查您是否仍然收到相同的错误消息(也许您解决了该问题,现在收到了不同的错误消息)。
其次,在eclipse中,打开“StaticLoggerBinder”类型,并在那里放置一个断点。还要在“LoggerFactory.getLogger”中放一个断点。然后调试。
当您有一个定制的sbt任务并且该任务使用slf4j时,可能会发生这种情况。使用< code>runner运行的自定义sbt任务具有通常指定为
(编译中的依赖类路径)值
这导致了logback-经典
通常附加在%runtime
上的错误。
要解决此错误,您必须将日志经典
包含在库中自定义任务定义或使用的任何位置编译
的依赖关系
。
有同样的错误。我去了Maven存储库,寻找最新的非测试版。只需更改版本即可。一个工作聚光灯:
<properties>
<slf4j.version>1.7.26</slf4j.version>
<logback.version>1.2.3</logback.version>
</properties>
<dependencies>
<!-- LOGGING -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
</dependencies>
我有一个maven项目,它使用slf4j和logback作为记录器。我可以看到这两个工件都在我maven dependencies树项中。但每当我试图运行我的项目时,我总是得到提示: SLF4J:无法加载类“org.slf4j.impl.StaticloggerBinder”。slf4j:默认为无操作(NOP)记录器实现slf4j:请参阅http://www.slf4j.org/codes.htm
问题内容: 我的应用程序将同时部署在tcServer和WebSphere 6.1上。此应用程序使用ehCache,因此需要slf4j作为依赖项。结果,我已将slf4j-api.jar(1.6)jar添加到我的war文件包中。 该应用程序在tcServer中工作正常,但以下错误除外: 但是,当我在WebSphere中部署时,会得到一个。 还伴随着 我已经检查了两个应用服务器的类路径,没有其他的slf
关于Eclipse IDE(Indigo、Juno和Kepler(32和64位版本)) 平台:Windows、Ubuntu、Mac M2E版本:1.1.0.20120530-0009,1.2.0.20120903-1050,1.3.0.20130129-0926, 1.4.0.20130601-0317 上面的错误是在将m2e更新到1.1版之后出现的。通过删除M2E1.1并回滚到M2E1.0,一切
运行maven项目时,在Eclipse Juno 4.2上出现此错误。 我没有使用slf4j进行日志记录。实际上我不使用任何日志记录。 我做错了什么。? 我pom中唯一的依赖关系.xml 编辑: mvn依赖:树 编辑2: 我创建了一个新的Maven项目 编辑3: 我在 Eclipse 之外运行该项目,但没有错误指示。
我想使用Eclipse Indigo运行maven项目,但当我运行项目Run As- 我对此进行了研究,后来意识到slf4j依赖也缺失了。我下载了slf4j-1.7.5.zip并将以下文件提取到C:\Program files\Java\jdk1.7.0\u 17\lib中: slf4j-simple-1.7.5.jarslf4j-api-1.7.5.jarlog4j-over-slf4j-1.7
问题内容: 我对SLF4J有依赖性。我收到此错误: 这是我的Maven条目: 问题出在哪里? 编辑: 没有log4j依赖性我得到以下异常 EDIT2 :这是我得到的示例树 问题答案: 我假设您正在使用Eclipse作为开发环境。 使用捆绑的Maven版本(m2e)时,Eclipse Juno,Indigo和Kepler不会抑制消息SLF4J:无法加载类“ org.slf4j.impl.Static