【问题标题】:maven + eclipse + tomcat : class not found exceptionmaven + eclipse + tomcat:找不到类异常
【发布时间】:2014-02-08 23:19:56
【问题描述】:

我有一个使用 servlet 的简单网络应用程序。我将它创建为一个 maven 项目,然后将其导入 eclipse(文件 -> 导入 -> 现有的 maven 项目)

war 已正确部署到 tomcat 7。

但是,当我在 Eclipse 中创建一个 tomcat 7 服务器然后在 eclipse 中启动 tomcat 时,我在运行应用程序时遇到了异常。

root cause

java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap
    first.model.BeerExpert.<clinit>(BeerExpert.java:12)
    first.servlet.BeerServlet.doPost(BeerServlet.java:26)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause

java.lang.ClassNotFoundException: com.google.common.collect.ImmutableMap
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    first.model.BeerExpert.<clinit>(BeerExpert.java:12)
    first.servlet.BeerServlet.doPost(BeerServlet.java:26)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

是否有任何特定的类路径设置需要在eclipse/tomcat中完成

注意:我可以运行 mvn clean install 并创建 jar 文件。然后,当我将 jar 移动到 tomcat(7) webapp 目录并重新启动时,它就可以正常工作了。

我没有发布 pom.xml 的详细信息,因为应用程序本身运行良好。但是,在解决方案中需要它,我可以发布它。

【问题讨论】:

    标签: eclipse maven tomcat


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我们可以在 pom 文件中配置这个设置吗?
    • 我也遇到了同样的问题,两天都搞不明白哪里出了问题。我想我的情况非常独特,但我把它放在那里以防万一。对于没有被导出的项目,我去了 Properties -> Project Facets 和未选中的 Utility Module。对Tomcat进行了清理并重新发布。做到了。我觉得这只是一些奇怪的错误,但我添加以防万一它可以帮助某人。
    • @DavidR,我已经为此苦苦挣扎了 24 小时,而您似乎是互联网上唯一拥有该解决方案的人。谢谢!如果您尝试了上述方法但没有运气,请试一试。
    • 此外,您可能需要删除并重新添加每个项目依赖项。有时它们在那里,但 Eclipse 说它找不到它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2017-10-12
    • 2014-04-26
    相关资源
    最近更新 更多