2015-02-26 12 views
6

मैं जो लकड़हारा के रूप में logback साथ slf4j का प्रयोग कर एक Maven परियोजना है विफल रही है शीघ्र। मैं देख सकता था कि दोनों आर्टिफैक्ट मेरे मैवेन निर्भरता पेड़ आइटम में हैं। लेकिन जब भी मैंने अपनी परियोजना को चलाने की कोशिश की, तो मैंने संकेत दिया:SLF4J अभी भी वर्ग लोड करने के लिए "org.slf4j.impl.StaticLoggerBinder"

SLF4J: कक्षा "org.slf4j.impl.StaticLoggerBinder" श्रेणी लोड करने में विफल। SLF4J: (एनओपी) लकड़हारा कार्यान्वयन कोई आपरेशन करने के लिए डिफ़ॉल्ट रूप से SLF4J: अधिक जानकारी के लिए http://www.slf4j.org/codes.html#StaticLoggerBinder देखें।

मैं लिंक की जांच, और यह कहा गया था:

एक (और केवल एक) slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j- के रखने वर्ग पथ पर jdk14.jar या logback-classic.jar समस्या को हल करना चाहिए।

मैं अपने प्रोजेक्ट (मैं 1.0.9 का उपयोग कर रहा) को logback-क्लासिक जोड़ने है, लेकिन मैं उस संदेश के लिए कहा जाए रखना और मेरी लॉग चल नहीं करता है।

किसी को भी मुझे इस समस्या को हल करने में मदद कर सकता है? धन्यवाद।

अद्यतन:

<?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>--> 
     <!--&lt;!&ndash; %l lowers performance &ndash;&gt;--> 
     <!--&lt;!&ndash;<pattern>%d [%t] %-5p %l%n %m%n</pattern>&ndash;&gt;--> 
     <!--<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> 

मैं अपने कार्यक्रम में इसका इस्तेमाल करते हैं:

<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 है

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 dependencies

+0

मुझे लगता है कि आप पहले ही देख चुके हैं http://stackoverflow.com/questions/11916706/slf4j-failed-to-load-class-org-slf4j-impl-staticloggerbinder-error –

+0

आपके क्लास पथ पर लॉगबैक-कोर भी है ? क्या आप अपना सटीक जावा आमंत्रण रखने के लिए अपनी पोस्ट संपादित कर सकते हैं? – durron597

+0

@GrzegorzOledzki: हाँ मैंने इसे देखा है और इसे आजमाएं, लेकिन यह मेरी समस्या का समाधान नहीं करता है। मेरी समस्या अलग है, यह ग्रहण गलती नहीं थी, क्योंकि लॉग वास्तव में नहीं चल रहा था। –

उत्तर

0

आप केवल कि विशिष्ट त्रुटि संदेश मिल सकता है logback-क्लासिक या logback कोर classpath पर नहीं है। चूंकि वे आपके स्वर्ग निर्भरताओं में हैं (पोम देखें) और अपने ग्रहण कक्षा में (स्क्रीनशॉट देखें), यह अजीब है।

सबसे पहले, अगर आप अब भी वही त्रुटि हो रही है (हो सकता है आपको लगता है कि समस्या का समाधान होने और अब एक अलग त्रुटि संदेश मिला) की जाँच करें।

दूसरा, ग्रहण में, खुले प्रकार "StaticLoggerBinder" और वहाँ एक ब्रेकपाइंट डाल दिया। "LoggerFactory.getLogger" में ब्रेकपॉइंट भी डालें। फिर डीबग करें।

+0

सबसे पहले, जब भी मैं ऐप्स चलाने की कोशिश करता हूं तब भी मुझे वही त्रुटि संदेश मिल रहा है। दूसरा, मैंने वहां ब्रेकपॉइंट लगाने की कोशिश की है, और जब मैं ऐप्स चलाता हूं तो यह कदम नहीं उठाता है। कोई सुझाव मुझे और क्या करना चाहिए? दिनों के लिए यहाँ अटक गया। धन्यवाद –

+0

नहीं, मुझे नहीं पता। –

संबंधित मुद्दे