jetty-maven-plugin NoClassDefFoundError

时间:2015-10-27 16:34:33

标签: maven tomcat log4j jetty war

我用两个maven孩子创建了maven父模块。它是战争输出中基于Web的应用程序,部署到Tomcat目录。问题是,为了测试war文件,我必须启动Tomcat并测试应用程序。对于这种情况,我决定在父POM.xml文件中使用jetty maven插件。这是它的样子:

<modules>
    <module>hellojavaworld</module>
    <module>application</module>
</modules>




  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <source>1.5</source>
      <target>1.5</target>
    </configuration>
  </plugin>


  <plugin>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-maven-plugin</artifactId>
       <version>9.2.11.v20150529</version>
      <configuration>
            <scanIntervalSeconds>10</scanIntervalSeconds>
             <webApp>
              <contextPath>/hellojavaworld</contextPath>           
             </webApp>   
         <war>c:\apache-tomcat-7.0.64\webapps\hellojavaworld.war</war>
        </configuration>
  </plugin>

如果我手动启动Tomcat并使用http://localhost:8080/hellojavaworld,它可以正常工作。 另一方面,当使用时

  

mvn jetty:run-war

它有效,但卡在错误上:

HTTP ERROR 500
Problem accessing /hellojavaworld/HelloServlet. Reason: 

Server Error

Caused by:
java.lang.NoClassDefFoundError: org/apache/log4j/Level

我知道这个问题很常见,因为缺少了罐子。我知道这些jar放在c:\ apache-tomcat-7.0.64 \ lib \文件夹中。

所以问题是如何告诉码头使用这个文件夹作为我的war文件的外部罐子?

  

注意:对于它运行的Tomcat本身,只有jetty存在问题。

1 个答案:

答案 0 :(得分:1)

Jetty不使用log4j。

为什么您希望Web容器在servlet规范之外提供WebApp日志记录?

  

请参阅各种ServletContext.log() methods了解实际的servlet规范记录

建议:将您的log4j jar文件放入您的webapp&#39; s WEB-INF/lib/