Eclipse Maven web application - can not run on server anymore

21,929

Solution 1

I found the answer on

Tomcat & Spring Web - Class Not Found Exception org.springframework.web.context.ContextLoaderListener

you need to push Maven dependencies to the server when the project is published to it.

Right Click on your web project in Project Explorer -> select 'Properties'. Under project properties, select 'Deployment Assembly'.

The Deployment Assembly property page shows the content that will be published as a assembled artifact by Eclipse to the server. You need to tell Eclipse that you want all your Maven dependencies to be published too.

To do that, click 'Add' button, then select 'Java Build Path Entries'. Click Next and select Maven Dependencies. This will publish the Maven dependency JAR files to the lib folder when Eclipse publishes your project to WST server

Solution 2

Three possible solutions. I've used all three depending on how it went wrong.

  1. I resolved this by removing the spring security dependencies from my POM (I only have spring-security-taglibs and spring-security-config which pull in everything else I need), saved the POM, let Maven do it's stuff and then added them back in again, let Maven get the dependencies again and restarted the server in Eclipse. When the problem is happening, the Maven dependencies directory in the Eclipse project seems to be missing the spring-security-web artifact (which holds org.springframework.security.web.session.HttpSessionEventPublisher). For me, it only happens when I start Eclipse after rebooting my PC so I'm assuming it's Windows (Vista) and the Eclipse M2Eclipse plugin not playing nicely on file locking or something.

  2. Alternative solution (the problem happened again and previous solutions wouldn't work). This time, I deleted the org/springframework directory from my local maven repository (the one in Eclipse Window->Preferences->Maven->User Settings). Then, update Maven dependencies and wahey here we go again.

  3. If you've done "Maven->Update Project Configuration" and this happens it may well be because your "Deployment Assembly" settings aren't including the Maven dependencies. Go to project->properties->deployment assembly. Check that Maven Dependencies is in there and haas a deploy path of /WEB-INF/lib. If not, click on add and find it under the Java build path option. If it's not there, your build path is probably corrupted too (although that's never happened to me).

Solution 3

Maybe you changed the <packaging> from war to something else per accident. Can you show your POM?

Can you also confirm that you have the Maven WTP Integration for WTP installed (this is improbable but maybe you installed the latest version of M2Eclipse without this extra and somehow, things were working until you updated the project configuration )?

Solution 4

I had that weird compilation errors you had on the WAR project. From some reason the classpath was changed somehow and it ignored other projects in my workspace which the WAR was dependent upon.

The only solution which eventually worked was to erase my workspace, and on each project delete .classpath, .project and .settings. Starting from a new workspace solved it.

I did find a bug mentioning something similar to this in Maven WTP bug tracker, but I didn't get enough votes to get fixed I guess.

Solution 5

Under project properties, go to "facets", press convert to something something, enable dynamic web module and press apply.

Share:
21,929
wuntee
Author by

wuntee

Updated on July 15, 2020

Comments

  • wuntee
    wuntee almost 4 years

    I have an maven eclipse webapp project that I was able to right click and 'Run on server' and it would deploy on tomcat. I recently did a 'maven -> Update project conifgurations' and I now can NOT deploy and run the project as a webapp. Has anyone seen this before? The only output from tomcat is as follows - it doesnt even look like its trying to deploy the application.

    Apr 14, 2010 3:58:54 PM org.apache.catalina.core.AprLifecycleListener init
    INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
    Apr 14, 2010 3:58:54 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
    WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:taac-web' did not find a matching property.
    Apr 14, 2010 3:58:54 PM org.apache.coyote.http11.Http11Protocol init
    INFO: Initializing Coyote HTTP/1.1 on http-8080
    Apr 14, 2010 3:58:54 PM org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 402 ms
    Apr 14, 2010 3:58:54 PM org.apache.catalina.core.StandardService start
    INFO: Starting service Catalina
    Apr 14, 2010 3:58:54 PM org.apache.catalina.core.StandardEngine start
    INFO: Starting Servlet Engine: Apache Tomcat/6.0.24
    Apr 14, 2010 3:58:54 PM org.apache.coyote.http11.Http11Protocol start
    INFO: Starting Coyote HTTP/1.1 on http-8080
    Apr 14, 2010 3:58:54 PM org.apache.jk.common.ChannelSocket init
    INFO: JK: ajp13 listening on /0.0.0.0:8009
    Apr 14, 2010 3:58:54 PM org.apache.jk.server.JkMain start
    INFO: Jk running ID=0 time=0/14  config=null
    Apr 14, 2010 3:58:54 PM org.apache.catalina.startup.Catalina start
    INFO: Server startup in 247 ms
    

    The POM is still set to WAR, but after cleaning the project I am now getting ClassNotFoundExceptions for libraries that are being included as Maven Dependencies:

    SEVERE: Error configuring application listener of class org.springframework.security.web.session.HttpSessionEventPublisher
    java.lang.ClassNotFoundException: org.springframework.security.web.session.HttpSessionEventPublisher
    

    Here is my POM:

    <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.cable.wuntee.neto.nse</groupId>
      <artifactId>taac-web</artifactId>
      <packaging>war</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>taac-web JEE5 Webapp</name>
      <url>http://maven.apache.org</url>
      <dependencies>
    
        <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>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
    
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>3.0.1.RELEASE</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.16</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>3.0.2.RELEASE</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-acl</artifactId>
            <version>3.0.2.RELEASE</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>3.0.2.RELEASE</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>3.0.2.RELEASE</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>2.2</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.ldap</groupId>
            <artifactId>spring-ldap-core</artifactId>
            <version>1.3.0.RELEASE</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.ldap</groupId>
            <artifactId>spring-ldap</artifactId>
            <version>1.3.0.RELEASE</version>
            <type>pom</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-ldap</artifactId>
            <version>3.0.2.RELEASE</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.cable.wuntee.neto.nse</groupId>
            <artifactId>wuntee.neto.nse-ldap</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.cable.wuntee.neto.nse</groupId>
            <artifactId>wuntee.neto.nse-cada</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
    
        <dependency>
            <groupId>com.cable.wuntee.neto.nse</groupId>
            <artifactId>wuntee.neto.nse-sams</artifactId>
            <version>2.0-SNAPSHOT</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>3.0.1.RELEASE</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.0.1.RELEASE</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.15</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>
              <source>1.5</source>
              <target>1.5</target>
            </configuration>
          </plugin>
        </plugins>
        <finalName>taac-web</finalName>
      </build>
    </project>