2012-07-05 13 views
8

Jestem nowy dla maven i ostatnie dwa dni próbuję zintegrować maven z małym projektem sieciowym. (Używam Eclipse Juno jako IDE). Najpierw wygenerowałem nowy projekt (strukturę) za pomocą polecenia "mvn-archetype-webapp" i skopiowałem źródła z projektu do tej struktury. Następnie dodałem wszystkie zależności do pliku pom.xml, dzięki czemu mogłem skompilować i uruchomić projekt za pomocą wtyczki tomcat7. Jak dotąd wszystko działa poprawnie z wyjątkiem Error Messages SLF4J na początku każdego polecenia maven:Błąd wiązania SLF4J

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. 

Moje pom.xml zależności wygląda następująco:

<!-- properties --> 
    <properties> 
     <spring.version>3.1.1.RELEASE</spring.version> 
    </properties> 

    <!-- dependencies --> 
    <dependencies> 

     <!-- logging --> 
     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>1.0.6</version> 
     </dependency> 

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

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
      <version>1.6.6</version> 
      <scope>runtime</scope> 
     </dependency> 

     <!-- junit --> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 

     <!-- Spring 3 --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${spring.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions>      
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions>    
     </dependency> 

     <!-- jee --> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>6.0</version> 
      <scope>provided</scope> 
     </dependency> 

     <!-- tiles --> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-core</artifactId> 
      <version>2.2.2</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-api</artifactId> 
      <version>2.2.2</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-jsp</artifactId> 
      <version>2.2.2</version> 
     </dependency> 

     <!-- jstl --> 
     <dependency> 
      <groupId>jstl</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 
    </dependencies> 

Czy ktoś mógłby mi pomóc z tym problemem?

+0

możliwy duplikat [SLF4J: Nie można załadować klasy "org.slf4j.impl.StaticLoggerBinder". błąd] (http://stackoverflow.com/questions/11916706/slf4j-failed-to-load-class-org-slf4j-impl-staticloggerbinder-error) –

Odpowiedz

8

Eclipse Juno i Indigo, gdy używana jest dołączona wersja maven (m2e), nie blokują komunikatu SLF4J: Nie można załadować klasy "org.slf4j.impl.StaticLoggerBinder". Takie zachowanie występuje w wersji m2e 1.1.0.20120530-0009 i nowszych.

Chociaż jest to wskazane jako błąd, dzienniki zostaną zapisane normalnie. Podświetlony błąd będzie nadal obecny, dopóki nie pojawi się poprawka tego błędu. Więcej na ten temat w m2e support site.

Obecne dostępne rozwiązanie to użycie zewnętrznej wersji programu maven, a nie dołączonej wersji Eclipse. Możesz znaleźć o tym rozwiązaniu i więcej szczegółów dotyczących tego błędu w poniższym pytaniu, który jest dokładnie tym samym problemem, z którym masz do czynienia.

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". error

0

Spróbuj dodać zależność dla logback-core.

<dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-core</artifactId> 
     <version>1.0.6</version> 
     <scope>runtime</scope> 
    </dependency> 
+0

Dzięki, ale to nie działa. Same komunikaty o błędach :( –

+0

Deklaracja klasy logback-classic wystarcza do ściągnięcia logback-core, jak również slf4j-api na podstawie przechodniości zależności Mavena.Nie musisz zadeklarować-core-logback jako zależności. – Ceki

1

Deklaracje zależności wyglądają dobrze. Logback i slf4j będą wysyłane w twojej aplikacji internetowej. Podejrzewam jednak, że slf4j-api.jar jest w jakiś sposób uwzględniony w Tomcat (ale nie w logbackach).

BTW, polecenie The mvn dependency:tree jest twoim przyjacielem. Co to mówi?

+0

Dodano zależności od maven do mojej odpowiedzi, powyżej. (Tak, wciąż dzieje się kilka miesięcy później ...) – Tim

3

Występuje ten sam problem: skopiowałem POM do pustego projektu i zmiażdżyłem go prawie do zera (patrz poniżej) - i nadal widzę błąd. Potrafię potwierdzić, że nie odejdzie, dodając do POM_powiązania SLF4J (logback, itp.) - wiadomość pochodzi prawdopodobnie od samego Mavena, a nie z kompilacji oprogramowania i testów. (Teraz otrzymuję go z całkowicie pustego projektu).

Najlepszą rzeczą, jaką mogę zrozumieć jest to, że myślę, że ma to coś wspólnego z Eclipse: kiedy uruchamiam Mavena ręcznie, z wiersza poleceń, błąd nie pojawia się - tylko podczas wywoływania w środowisku Eclipse. (Używam Eclipse Helios Release 2 na MacOSX, tylko FYI, więc wiemy, że problem nie ogranicza się do wersji, Juno.)

<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>testing</groupId> 
    <artifactId>testing</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

</project> 

FYI, w odpowiedzi na sugestię Ceki jest, oto wyniki cel drzewa zależności celu:

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. 
[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building testing 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ testing --- 
[INFO] testing:testing:jar:0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1.496s 
[INFO] Finished at: Thu Oct 04 10:05:41 MDT 2012 
[INFO] Final Memory: 9M/81M 
[INFO] ------------------------------------------------------------------------ 

Nie za dużo informacji, ale jest.

3

Ten błąd pochodzi z programu eclipse running maven, a nie z projektu, więc nie powinien wpływać na proces budowania ani na wynikowe pliki.

Zakładam, że jest to problem związany z używaniem przez nie slf4j lub innego narzędzia do rejestrowania, ale próbuję użyć wtyczki Eclipse lub maven.

Najprostszym sposobem na pozbycie się błędu jest skorzystanie z zewnętrznego urządzenia przenośnego zamiast środowiska wykonawczego w środowisku Eclipse, które można skonfigurować w Preferencje -> Maven -> Instalacje.

0

"z wtyczką tomcat7"

Wtyczka tomcat7 ma zależność slf4j. Miałem ten sam problem, dopóki nie przydzieliłem zależności bezpośrednio do wtyczki tomcat7.

<pluginManagement> 
<plugins> 
    <plugin> 
     <groupId>org.apache.tomcat.maven</groupId> 
     <artifactId>tomcat7-maven-plugin</artifactId> 
     <version>2.2</version> 
     <dependencies> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-simple</artifactId> 
       <version>1.7.5</version> 
      </dependency>      
     </dependencies> 
     <configuration> 
      <!-- ...snip... --> 
     </configuration> 
    </plugin> 
</plugins> 
</pluginManagement> 
-1

Możesz dodać to do swoich właściwości pom.

<org.slf4j-version>1.7.5</org.slf4j-version> 
Powiązane problemy