Eclipse Maven Web应用程序 - 无法再在服务器上运行

时间:2010-04-14 22:03:05

标签: eclipse maven-2 web-applications m2eclipse eclipse-wtp

我有一个maven eclipse webapp项目,我可以右键单击“在服务器上运行”,它将部署在tomcat上。我最近做了一个'maven - >更新项目conifguration',我现在无法部署和运行项目作为webapp。谁看过这个吗? tomcat的唯一输出如下 - 它甚至看起来都没有尝试部署应用程序。

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

POM仍然设置为WAR,但在清理项目后,我现在正在为包含在Maven依赖项中的库获取ClassNotFoundExceptions:

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

这是我的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>

10 个答案:

答案 0 :(得分:15)

我在

上找到了答案

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

当项目发布到服务器时,您需要将Maven依赖项推送到服务器。

在Project Explorer中右键单击您的Web项目 - &gt;选择“属性”。在项目属性下,选择“部署程序集”。

Deployment Assembly属性页面显示Eclipse将作为汇编工件发布到服务器的内容。您需要告诉Eclipse您希望发布所有Maven依赖项。

为此,单击“添加”按钮,然后选择“Java构建路径条目”。单击“下一步”,然后选择“Maven依赖项”。当Eclipse将项目发布到WST服务器时,这将把Maven依赖JAR文件发布到lib文件夹

答案 1 :(得分:4)

三种可能的解决方案。我根据它出错的方式使用了所有这三个。

  1. 我通过从POM中删除spring安全依赖项来解决这个问题(我只有spring-security-taglibs和spring-security-config,它可以引入我需要的所有东西),保存POM,让Maven做到这一点然后再将它们添加回来,让Maven再次获取依赖项并在Eclipse中重新启动服务器。当问题发生时,Eclipse项目中的Maven依赖项目录似乎缺少spring-security-web工件(它包含org.springframework.security.web.session.HttpSessionEventPublisher)。对我来说,只有当我重新启动我的PC后启动Eclipse才会发生这种情况,因此我假设它是Windows(Vista)和Eclipse M2Eclipse插件在文件锁定或其他方面不能很好地运行。

  2. 替代解决方案(问题再次发生,之前的解决方案无效)。这一次,我从我的本地maven存储库(Eclipse Window-&gt; Preferences-&gt; Maven-&gt; User Settings)中删除了org / springframework目录。然后,更新Maven依赖项并在这里再次发送。

  3. 如果您已完成“Maven-&gt;更新项目配置”,这可能是因为您的“部署程序集”设置不包括Maven依赖项。转到project-&gt; properties-&gt;部署程序集。检查Maven Dependencies是否在那里并且有一个/ WEB-INF / lib的部署路径。如果没有,请单击“添加”并在“Java构建路径”选项下找到它。如果它不在那里,你的构建路径也可能已损坏(尽管我从未发生过这种情况)。

答案 2 :(得分:2)

也许您每次发生事故时都会将<packaging>war更改为其他内容。你能展示你的POM吗?

你能否确认安装了 Maven WTP Integration for WTP (这是不太可能的,但也许你安装了最新版本的M2Eclipse而没有这个额外的东西,不知怎的,事情一直在工作,直到你更新了项目配置)?

答案 3 :(得分:2)

我在WAR项目中遇到了奇怪的编译错误。由于某种原因,类路径以某种方式被更改,它忽略了WAR所依赖的工作空间中的其他项目。

最终工作的唯一解决方案是擦除我的工作区,并在每个项目上删除.classpath,.project和.settings。从新的工作空间开始解决了它。

我确实发现bug在Maven WTP错误跟踪器中提到了与此类似的内容,但是我没有得到足够的投票来解决这个问题。

答案 4 :(得分:2)

在项目属性下,转到&#34; facets&#34;,按转换为某些内容,启用动态Web模块并按应用。

答案 5 :(得分:1)

这些都没有帮助 - 我最终只是禁用了工作区解析,并在它们过期时处理安装工作区依赖项。

答案 6 :(得分:0)

替代解决方案(问题再次发生,以前的解决方案无效)。

这一次,我从我的本地maven存储库(Eclipse Window-&gt; Preferences-&gt; Maven-&gt; User Settings)中删除了org / springframework目录。然后,更新Maven依赖项,并在此重新开始。

答案 7 :(得分:0)

今天我遇到了同样的问题,对我来说,有助于在日食中重新安装apache,然后重建/刷新项目

答案 8 :(得分:0)

好的,我也在努力解决这个问题。我不认为有很多确定的答案,有一段时间我会删除该项目并重新导入它,因为每次都可以使用。

今天我发现它在项目上运行maven clean后再次开始工作(例如,从命令行清除mvn)。尝试一下,看看这是否适合你。

这不等同于eclipse clean,因为它只从目标目录中删除选定的几个文件夹,而不是整个文件夹。

答案 9 :(得分:0)

我经常遇到这个问题,快速解决方法是:

  • 右键单击项目 - &gt; Maven - &gt;更新项目......
  • Eclipse Servers选项卡:停止服务器,右键单击Tomcat v# - &gt;干净...... - &gt;行

以下是我在运行tomcat时用于查看Eclipse 实际部署的故障排除步骤。这是火星和霓虹灯的最新版本。 (这些步骤假设您已使用“在服务器上运行...”运行项目至少一次。)

  1. 在tomcat上拉出运行项目的设置:
    右键单击项目 - &gt;运行方式 - &gt;运行配置......
  2. 转到参数选项卡并查看VM参数,您将看到如下内容: Run As Server Settings Arguments tab with -Dwtp.deploy 寻找-Dwtp.deploy的价值。对我来说是
  3. D:\code\workspaceNeon\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

    1. 该目录包含标准的webapp部署结构。在OS文件资源管理器中打开该目录并检查其内容。当我查看我的WEB-INF/lib时,我看到我的大多数依赖项都丢失了
    2. 完成后请务必退出该目录,否则eclipse会在尝试修改/更新时出错
    3. 现在是解决问题的时候了。让我们看看Eclipse 假设要部署的内容:

      1. 打开项目的Deployment Assembly设置:

        右键点击项目 - &gt;属性 - &gt;部署大会 Deployment Assembly with Maven Dependencies

        1. Maven Dependencies是上面的关键项目。 如果缺少这个,请关闭对话框并进行maven更新: 右键单击项目 - &gt; Maven - &gt;更新项目...

        2. 现在我们已经进行了更新,让我们手动清除服务器工作目录并重新发布。这可能并不总是必要的,但是确保部署程序集中显示的内容与实际部署内容之间的所有内容保持同步的好方法:

          • 在eclipse中转到Servers选项卡。如果你在当前的日食布局中没有看到它,那就行了 窗口菜单 - &gt;显示视图 - &gt;其他...... - &gt;搜索“服务器” Eclipse servers tab
          • 右键单击Tomcat v#...并选择“Clean ...”。在确认对话框中单击“确定” Eclipse server clean confirm dialog
          • 右键单击Tomcat v#...并选择“发布”
          • 启动服务器并进行测试。如果仍有问题,请返回wtp.deploy目录并检查以查看错误
      2. 祝你好运!