2013-06-03 64 views
1

我有一個Java EE項目,在我們的遠程服務器和tomcat容器之一中工作正常。無論何時我們想對應用程序進行一些更改,我們都會在本地計算機上執行該操作,然後構建它並將ws.war複製到tomcat根目錄中的服務器上。Ubuntu 12.04,Tomcat7,NetBeans 7 - 獲取java.lang.NoClassDefFoundError:Lorg/slf4j/Logger;

我想設置本地開發環境,我可以對應用程序進行更改。我有我的項目源文件。我下面的事情:

1. Install tomcat7 in my home directory and set up `CATALINA_HOME` 
    environment variable in `.bashrc` 
2. Install oracle-java and setup JAVA_HOME in `.bashrc` 
3. Install Netbeans 7 and import the project in it. 
4. Since, the Netbeans came with `glassfish` as default server, I added 
    a tomcat as the server with proper configuration. 
5. I try running the application (through Netbeans), and I receive the following error: 

Jun 04, 2013 2:39:58 AM org.apache.catalina.core.AprLifecycleListener init 
    2 INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/  lib:/usr/lib 
    3 Jun 04, 2013 2:39:59 AM org.apache.coyote.AbstractProtocol init 
    4 INFO: Initializing ProtocolHandler ["http-bio-8080"] 
    5 Jun 04, 2013 2:39:59 AM org.apache.coyote.AbstractProtocol init 
    6 INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
    7 Jun 04, 2013 2:39:59 AM org.apache.catalina.startup.Catalina load 
    8 INFO: Initialization processed in 1100 ms 
    9 Jun 04, 2013 2:39:59 AM org.apache.catalina.core.StandardService startInternal 
10 INFO: Starting service Catalina 
11 Jun 04, 2013 2:39:59 AM org.apache.catalina.core.StandardEngine startInternal 
12 INFO: Starting Servlet Engine: Apache Tomcat/7.0.40 
13 Jun 04, 2013 2:39:59 AM org.apache.catalina.startup.HostConfig deployDescriptor 
14 INFO: Deploying configuration descriptor /home/frrole/apache-tomcat-7.0.40/conf/Catalina/localhost/ws.xml 
15 Jun 04, 2013 2:39:59 AM org.apache.catalina.startup.HostConfig deployDescriptor 
16 WARNING: A docBase /home/frrole/apache-tomcat-7.0.40/webapps/projectfrrole/target/ws inside the host appBase has been specified, and will be ignored 
17 Jun 04, 2013 2:40:00 AM org.apache.catalina.core.ContainerBase addChildInternal 
18 SEVERE: ContainerBase.addChild: start: 
19 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ws]] 
20  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
21  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
22  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
23  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) 
24  at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657) 
25  at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1636) 
26  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
27  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
28  at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
29  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
30  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
31  at java.lang.Thread.run(Thread.java:722) 
32 Caused by: java.lang.NoClassDefFoundError: Lorg/slf4j/Logger; 
33  at java.lang.Class.getDeclaredFields0(Native Method) 
34  at java.lang.Class.privateGetDeclaredFields(Class.java:2317) 
35  at java.lang.Class.getDeclaredFields(Class.java:1762) 
36  at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106) 
37  at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:261) 
38  at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:140) 
39  at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:67) 
40  at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:405) 
41  at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881) 
42  at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369) 
43  at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
44  at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
45  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5269) 
46  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
47  ... 11 more 
48 Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger 
49  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 

我做了一些研究,我發現有一些版本不兼容與1.6.1版和slf4j以前的版本。但是,我無法找到解決辦法。

任何幫助表示讚賞。我的POM.xml如下:

<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.frrole.service</groupId> 
    <artifactId>ws</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <name>frrole web service</name> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <springframework-version>3.0.5.RELEASE</springframework-version> 
    </properties> 
    <build> 
     <finalName>${project.artifactId}</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.5</source> 
        <target>1.5</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.1.1</version> 
       <configuration> 
        <packagingExcludes> 
         WEB-INF/lib/*spring*.jar, 
         WEB-INF/lib/*common*.jar, 
         WEB-INF/lib/*http*.jar, 
         WEB-INF/lib/*connector*.jar, 
         WEB-INF/lib/*json*.jar, 
         WEB-INF/lib/*jackson*.jar, 
         WEB-INF/lib/*aspect*.jar, 
         WEB-INF/lib/*aop*.jar, 
         WEB-INF/lib/*c3p*.jar, 
         WEB-INF/lib/*jta*.jar, 
         WEB-INF/lib/*4j*.jar 
        </packagingExcludes> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-lang</groupId> 
      <artifactId>commons-lang</artifactId> 
      <version>2.5</version> 
     </dependency> 
     <!-- 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>${springframework-version}</version> 
      <scope>test</scope> 
     </dependency> 
     --> 
     <!--<dependency> 
      <groupId>mm.mysql</groupId> 
      <artifactId>mm.mysql</artifactId> 
      <version>2.0.7</version> 
     </dependency>--> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>${springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-web</artifactId> 
      <version>${springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-config</artifactId> 
      <version>${springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-taglibs</artifactId> 
      <version>${springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.18</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.8.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>1.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.json</groupId> 
      <artifactId>json</artifactId> 
      <version>20090211</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpclient</artifactId> 
      <version>4.1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-mapper-asl</artifactId> 
      <version>1.9.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.quartz-scheduler</groupId> 
      <artifactId>quartz</artifactId> 
      <version>2.1.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.twitter4j</groupId> 
      <artifactId>twitter4j-core</artifactId> 
      <version>3.0.3</version> 
     </dependency> 
    </dependencies> 

</project> 
+0

您可以發佈'mvn dependency:tree '你的項目命令? – Ceki

回答

0

首先它有點奇怪你有sl4fj-log4j12但不是實際的log4j依賴本身。通常你需要這個,因爲sl4fj只是一個門面。嘗試添加類似:

<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.17</version> 
</dependency> 

其次,你可能要檢查什麼在你的生產服務器的內部$ TOMCAT_HOME/lib文件夾中。如果有任何額外的瓶子放置在默認的頂部,您需要將其複製到您的本地環境(或重組部署,使所有內容都包含在您的應用程序中)

+0

好的,會嘗試,並會讓你知道。 – VaidAbhishek

+0

現在,我越來越...由...引起:java.lang.NoClassDefFoundError:Lorg/slf4j/Logger; – VaidAbhishek

+0

聲明對org.slf4j的依賴:slf4j-log4j12將引入org.slf4j:slf4j-api以及log4j:log4j。因此,通常不需要分別聲明org.slf4j:slf4j-api或log4j:log4j。 – Ceki