15

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>
4

10 回答 10

16

我找到了答案

Tomcat & Spring Web - 找不到类异常 org.springframework.web.context.ContextLoaderListener

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

在项目资源管理器中右键单击您的 Web 项目 -> 选择“属性”。在项目属性下,选择“部署程序集”。

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

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

于 2012-08-07T15:01:19.730 回答
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->Preferences->Maven->User Settings 中的那个)中删除了 org/springframework 目录。然后,更新 Maven 依赖项,哇,我们又来了。

  3. 如果您已经完成“Maven->Update Project Configuration”并且发生这种情况,很可能是因为您的“部署程序集”设置不包括 Maven 依赖项。转到项目-> 属性-> 部署程序集。检查 Maven 依赖项是否在其中,并具有 /WEB-INF/lib 的部署路径。如果没有,请单击添加并在 Java 构建路径选项下找到它。如果它不存在,那么您的构建路径也可能已损坏(尽管这从未发生在我身上)。

于 2010-08-06T09:46:34.090 回答
2

也许您每次意外都将<packaging>from更改为其他内容。war你能展示你的POM吗?

您是否还可以确认您安装了用于 WTP 的 Maven WTP 集成(这不太可能,但也许您安装了最新版本的 M2Eclipse 没有这个额外的,并且不知何故,在您更新项目配置之前一切正常)?

于 2010-04-14T22:20:24.433 回答
2

在项目属性下,转到“构面”,按转换为某事,启用动态 Web 模块并按应用。

于 2011-11-04T09:51:00.643 回答
2

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

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

我确实在 Maven WTP 错误跟踪器中发现了一个提到类似内容的错误,但我猜我没有得到足够的票数来修复。

于 2010-06-11T22:54:22.477 回答
1

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

于 2010-06-11T22:42:04.700 回答
0

好的,我也为此苦苦挣扎。我认为没有太多明确的答案,有一段时间我会删除该项目并重新导入它,因为每次都可以。

今天我发现它在对项目运行 maven clean 后又开始工作了(例如,从命令行执行 mvn clean)。试一试,看看这是否适合你。

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

于 2014-01-06T22:03:38.460 回答
0

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

于 2013-01-20T16:35:24.113 回答
0

替代解决方案(问题再次发生,以前的解决方案不起作用)。

这次,我从本地 maven 存储库(Eclipse Window->Preferences->Maven->User Settings 中的那个)中删除了 org/springframework 目录。然后,更新 Maven 依赖项,哇,我们又来了。

于 2011-02-02T15:28:22.580 回答
0

我经常遇到这个问题,快速修复是:

  • 右键单击项目-> Maven-> 更新项目...
  • Eclipse Servers 选项卡:停止服务器,右键单击 Tomcat v# -> Clean... -> OK

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

  1. 拉起在tomcat上运行项目的设置:
    右键项目->运行方式->运行配置...
  2. 转到参数选项卡并查看 VM 参数,您将看到如下内容: 使用 -Dwtp.deploy 作为服务器设置参数选项卡运行 查找-Dwtp.deploy. 对我来说是

D:\code\workspaceNeon\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

  1. 该目录包含标准的 webapp 部署结构。在您的操作系统文件资源管理器中打开该目录并检查其内容。当我查看我的WEB-INF/lib时,我发现我的大部分依赖项都丢失了
  2. 完成后请务必退出该目录,否则 eclipse 会在尝试修改/更新它时出错

现在是解决问题的时候了。让我们看看 Eclipse应该部署什么:

  1. 打开项目的部署程序集设置:

    右键单击项目-> 属性-> 部署程序集 具有 Maven 依赖项的部署程序集

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

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

      • 在 Eclipse 中,转到“服务器”选项卡。如果您在当前的 Eclipse 布局中没有看到它,请执行 Window menu -> Show View -> Other.. -> 搜索“Servers” Eclipse 服务器选项卡
      • 右键单击 Tomcat v#... 并选择“清理...”。在确认对话框中单击确定 Eclipse 服务器清理确认对话框
      • 右键单击 Tomcat v#... 并选择“发布”
      • 启动服务器并测试。如果仍有问题,请返回 wtp.deploy 目录并检查以查看问题所在

祝你好运!

于 2016-07-14T14:59:01.993 回答