Announcement Announcement Module
Collapse
No announcement yet.
Spring mvc sample project - slf4j problem Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • Spring mvc sample project - slf4j problem

    I downloaded the last version of sts, and create an spring mvc template project from sts, but when e start to publish to an oracle weblogic server i have an slf4j error.
    I did not change anything from the default project.
    I have no ideia how to fix this, i tried some things but i'm being desperate now...

    sts version: springsource-tool-suite-2.9.1.RELEASE-e3.7.2-win32
    oracle weblogic version: 12c
    error log :

    java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/ThrowableV
    Last edited by lifeTechnicolor; Mar 26th, 2012, 06:55 PM.

  • #2
    here is pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.a</groupId>
    <artifactId>com</artifactId>
    <name>proj</name>
    <packaging>war</packaging>
    <version>1.0.0-BUILD-SNAPSHOT</version>
    <properties>
    <java-version>1.6</java-version>
    <org.springframework-version>3.1.0.RELEASE</org.springframework-version>
    <org.aspectj-version>1.6.9</org.aspectj-version>
    <org.slf4j-version>1.5.10</org.slf4j-version>
    </properties>
    <dependencies>
    <!-- Spring -->
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${org.springframework-version}</version>
    <exclusions>
    <!-- Exclude Commons Logging in favor of SLF4j -->
    <exclusion>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    </exclusion>
    </exclusions>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${org.springframework-version}</version>
    </dependency>

    <!-- AspectJ -->
    <dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjrt</artifactId>
    <version>${org.aspectj-version}</version>
    </dependency>

    <!-- Logging -->
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${org.slf4j-version}</version>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${org.slf4j-version}</version>
    <scope>runtime</scope>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>${org.slf4j-version}</version>
    <scope>runtime</scope>
    </dependency>
    <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.15</version>
    <exclusions>
    <exclusion>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    </exclusion>
    <exclusion>
    <groupId>javax.jms</groupId>
    <artifactId>jms</artifactId>
    </exclusion>
    <exclusion>
    <groupId>com.sun.jdmk</groupId>
    <artifactId>jmxtools</artifactId>
    </exclusion>
    <exclusion>
    <groupId>com.sun.jmx</groupId>
    <artifactId>jmxri</artifactId>
    </exclusion>
    </exclusions>
    <scope>runtime</scope>
    </dependency>

    <!-- @Inject -->
    <dependency>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
    <version>1</version>
    </dependency>

    <!-- Servlet -->
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.1</version>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    </dependency>

    <!-- Test -->
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.7</version>
    <scope>test</scope>
    </dependency>
    </dependencies>
    <build>
    <plugins>
    <plugin>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.9</version>
    <configuration>
    <additionalProjectnatures>
    <projectnature>org.springframework.ide.eclipse.cor e.springnature</projectnature>
    </additionalProjectnatures>
    <additionalBuildcommands>
    <buildcommand>org.springframework.ide.eclipse.core .springbuilder</buildcommand>
    </additionalBuildcommands>
    <downloadSources>true</downloadSources>
    <downloadJavadocs>true</downloadJavadocs>
    </configuration>
    </plugin>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
    <source>1.6</source>
    <target>1.6</target>
    <compilerArgument>-Xlint:all</compilerArgument>
    <showWarnings>true</showWarnings>
    <showDeprecation>true</showDeprecation>
    </configuration>
    </plugin>
    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <configuration>
    <mainClass>org.test.int1.Main</mainClass>
    </configuration>
    </plugin>
    </plugins>
    </build>
    </project>

    Comment


    • #3
      I would try removing all "commons-logging" exclusions and also all slf4j dependencies. And I would even go further and removed log4j dependency. The result will be that commons-logging will be used as logging API and I suppose WebLogic provides some configurable logging capability based on JUL so it should work without log4j. But I personally never tried it so forgive me if it does not work.

      Comment


      • #4
        Any more ideas? I tried that but doesn't work. I created a simple mvc template project avaliable on sts to start working with spring, what am i doing wrong?

        Comment


        • #5
          Originally posted by lifeTechnicolor View Post
          Any more ideas? I tried that but doesn't work. I created a simple mvc template project avaliable on sts to start working with spring, what am i doing wrong?
          What exactly does not work? Are you getting any other exception?

          Comment


          • #6
            I only get this exception

            Code:
            java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
            at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:141)

            Comment


            • #7
              it looks like you did not remove slf4j dependency from pom.xml. Basically remove entire <!-- Logging --> section from pom.xml (everything between <!-- Logging --> and <!-- @Inject --> lines)

              Comment


              • #8
                Now i get this error.
                How i can solve the problem? i just want a stable ambient to know more about spring, i downloaded the last version of sts, am i the only one with this problem?

                Code:
                <27/Mar/2012 20H02m BST> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID "1332874921411" for task "0". Error is: "java.lang.ClassNotFoundException: org.apache.commons.logging.Log"
                java.lang.ClassNotFoundException: org.apache.commons.logging.Log
                	at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
                	at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
                	at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)
                	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
                	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
                	Truncated. see log file for complete stacktrace
                Caused By: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
                	at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
                	at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
                	at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)
                	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
                	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
                	Truncated. see log file for complete stacktrace
                > 
                <27/Mar/2012 20H02m BST> <Warning> <Deployer> <BEA-149004> <Failures were detected while initiating distribute task for application "_auto_generated_ear_".> 
                <27/Mar/2012 20H02m BST> <Warning> <Deployer> <BEA-149078> <Stack trace for message 149004
                java.lang.ClassNotFoundException: org.apache.commons.logging.Log
                	at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
                	at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
                	at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)
                	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
                	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
                	Truncated. see log file for complete stacktrace
                Caused By: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
                	at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
                	at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
                	at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)
                	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
                	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
                	Truncated. see log file for complete stacktrace
                >

                Comment


                • #9
                  that is funny, but did you even read my first comment? the advice to remove "commons-logging" exclusion? In pom.xml it is one line above the line "<!-- Exclude Commons Logging in favor of SLF4j -->". So remove entire <exclusions>...</exclusions> block.
                  The exception is "java.lang.ClassNotFoundException: org.apache.commons.logging.Log" -> you "excluded" commons logging in your pom.xml, that is why it's not found.

                  Comment


                  • #10
                    I tried that too and i get the same error
                    Code:
                    <27/Mar/2012 20H15m BST> <Warning> <HTTP> <BEA-101162> <User defined listener org.springframework.web.context.ContextLoaderListener failed: java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V.
                    java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
                    	at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:159)
                    	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:272)
                    	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
                    	at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:582)
                    	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
                    	Truncated. see log file for complete stacktrace
                    >

                    Comment


                    • #11
                      I see... so final advice: revert back to the original pom.xml and change slf4j version from 1.5.10 to 1.6.1 like this:
                      <org.slf4j-version>1.6.1</org.slf4j-version>
                      Actually I've tested it myself on weblogic 12c. The problem is that slf4j is bundled in weblogic and the version bundled is 1.6.1 and it conflicts with 1.5.10. Hope this helps get you started.

                      Comment


                      • #12
                        Attachment
                        Here are Maven Dependencies
                        Attached Files

                        Comment


                        • #13
                          Thanks a lot!
                          That solved my problem. I'm really grateful for your help

                          Comment


                          • #14
                            Originally posted by lifeTechnicolor View Post
                            Attachment
                            Here are Maven Dependencies

                            can you please post how you fixed it
                            Attached Files

                            Comment


                            • #15
                              Originally posted by JohnTheDroider View Post
                              can you please post how you fixed it

                              i change slf4j version from 1.5.10 to 1.6.1

                              Comment

                              Working...
                              X