【问题标题】:ClassNotFound W/ Spring using Eclipse Tomcat Maven M2EclipseClassNotFound W/ Spring 使用 Eclipse Tomcat Maven M2Eclipse
【发布时间】:2023-03-13 04:25:01
【问题描述】:

对不起,我是这个堆栈溢出的新手,所以请原谅底部的长错误消息。

我正在尝试使用 Eclipse 将名为 BroadLeaf 的项目部署到 Tomcat 7 服务器。我已经安装了 M2Eclipse/WTP 集成。我以干净的包为目标运行 Maven 配置(通过 Eclipse)。然后我进行刷新并尝试启动服务器,但是它失败了。

更新:我正在尝试部署此处找到的项目...https://broadleaf.svn.sourceforge.net/svnroot/broadleaf/trunk/BroadleafCommerce/site/BroadleafCommerceDemo/pom.xml

有什么想法吗?

java.lang.ClassNotFoundException:org.springframework.web.util.Log4jConfigListener 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1664) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1509) 在 org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:406) 在 org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:388) 在 org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:117) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4268) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4771) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:990) 在 org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:772) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:990) 在 org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:275) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.core.StandardService.startInternal(StandardService.java:424) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:648) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.startup.Catalina.start(Catalina.java:576) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415) 2011 年 9 月 27 日晚上 8:41:12 org.apache.catalina.core.StandardContext listenerStart 严重:配置类 org.broadleafcommerce.profile.web.extensibility.MergeContextLoaderListener 的应用程序侦听器时出错 java.lang.ClassNotFoundException:org.broadleafcommerce.profile.web.extensibility.MergeContextLoaderListener 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1664) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1509) 在 org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:406) 在 org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:388) 在 org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:117) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4268) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4771) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:990) 在 org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:772) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:990) 在 org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:275) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.core.StandardService.startInternal(StandardService.java:424) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:648) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.startup.Catalina.start(Catalina.java:576) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415) 2011 年 9 月 27 日晚上 8:41:12 org.apache.catalina.core.StandardContext listenerStart 严重:配置类 org.springframework.security.web.session.HttpSessionEventPublisher 的应用程序侦听器时出错 java.lang.ClassNotFoundException:org.springframework.security.web.session.HttpSessionEventPublisher 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1664) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1509) 在 org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:406) 在 org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:388) 在 org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:117) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4268) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4771) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:990) 在 org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:772) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:990) 在 org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:275) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.core.StandardService.startInternal(StandardService.java:424) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:648) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138) 在 org.apache.catalina.startup.Catalina.start(Catalina.java:576) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415) 2011 年 9 月 27 日晚上 8:41:12 org.apache.catalina.core.StandardContext listenerStart 严重:由于先前的错误而跳过安装应用程序侦听器 2011 年 9 月 27 日晚上 8:41:12 org.apache.catalina.core.StandardContext startInternal 严重:错误 listenerStart 2011 年 9 月 27 日晚上 8:41:12 org.apache.catalina.core.StandardContext startInternal 严重:上下文 [/broadleaf] 启动因先前的错误而失败

【问题讨论】:

  • 你能检查一下 org.springframework.web.util.Log4jConfigListener 是否在任何罐子里。这在 XML 文件中指定 - 因此即使缺少该类,您也不会出现编译器错误。
  • 好问题,Maven 抓取了依赖项并添加到 ./target//WEB-INF/lib 文件夹中。这意味着一旦创建它们,它们就都位于那里。我相信 WTP 的 m2Eclipse 扩展应该处理指向这个文件夹,但是,它要么不起作用,要么我在某处缺少设置。
  • 想让人们知道,自从这篇文章以来,Broadleaf Commerce 已转移到 GitHub。文档可在项目网站broadleafcommerce.org 上获取。

标签: eclipse spring tomcat maven m2eclipse


【解决方案1】:

问题似乎在于 WTP 没有与 maven 依赖项正确集成。不是我解决问题的最佳解决方案......

  1. 在 Eclipse 中右键单击项目并转到属性
  2. 转到部署程序集
  3. 点击添加
  4. 选择 Java 构建路径条目
  5. 选择所有 M2_HOME 条目。
  6. 清理构建和部署项目不要将 M2ECLIPSE 插件与 ECLIPSE:ECLIPSE 一起使用!
  7. 应该可以帮助您解决错误。

有人知道真正的解决方案吗?

更新:下次我导入 WTP 时似乎与 Maven 有共鸣,所以可能在安装插件后删除并重新导入您的项目?

【讨论】:

    【解决方案2】:

    查看 Broadleaf source repository 中的 pom 文件,看起来它们都没有构建 web 应用程序(war 工件)。这是m2eclipse/wtp 集成正常工作所必需的。

    如果不是这种情况,请编辑问题,指定您尝试在 tomcat 中部署的特定阔叶子项目。

    【讨论】:

    • 你知道我什至没有检查,我想我只是假设他们已经配置了它。所以我会做一些谷歌搜索,但那是 maven-war-plugin 正确的吗?
    • 既然您听起来好像在 Broadleaf 方面有经验,那么我是否正确地假设我需要部署演示站点?我知道我可以通过 ant jetty-demo (或类似的)让它工作,但我正在尝试部署到 tomcat 服务器,我认为我可以使用 mvn clean package 命令创建的战争。我应该改用启动器项目吗?
    • 刚刚检查过,它确实建立了战争...我最初发送的 pom 是根 pom,用于项目的 pom 可在此处获得...broadleaf.svn.sourceforge.net/svnroot/broadleaf/trunk/…
    猜你喜欢
    • 2023-03-21
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多