【问题标题】:Eclipse - web app Tomcat deployment borkedEclipse - Web 应用程序 Tomcat 部署失败
【发布时间】:2014-02-13 08:46:13
【问题描述】:

任何帮助将不胜感激。我正在运行一个 Web 应用程序,它依赖于我工作空间中的另外两个项目。这两个项目进一步依赖于我工作区中的其他 3 个项目。工作空间内的任何项目都没有错误。在 Tomcat 中运行 Web 应用程序会产生以下错误:

java.lang.NoClassDefFoundError: com/tele/misc/DefaultApplicationModule

这是第一级依赖项目中的一个类。直到最近一切正常。这显然是某种类路径问题?关于如何在 Eclipse 元数据中找到它并解决这个问题的任何建议?

更多细节:

控制台:

*******************************************************************
*** WARNING: Apache MyFaces-2 is running in DEVELOPMENT mode.   ***
***                                         ^^^^^^^^^^^         ***
*** Do NOT deploy to your live server(s) without changing this. ***
*** See Application#getProjectStage() for more information.     ***
*******************************************************************

Feb 13, 2014 1:41:18 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Feb 13, 2014 1:41:18 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/CRGen] startup failed due to previous errors
Feb 13, 2014 1:41:18 PM org.apache.catalina.core.StandardContext listenerStop
SEVERE: Exception sending context destroyed event to listener instance of class         za.co.huge.processor.CRToolContextListener
java.lang.NoClassDefFoundError: com/tele/misc/DefaultApplicationModule
    at za.co.huge.processor.ReportProcessor.<init>(ReportProcessor.java:30)
    at za.co.huge.processor.ReportProcessor.getInstance(ReportProcessor.java:41)
    at     za.co.huge.processor.CRToolContextListener.contextDestroyed(CRToolContextListener.java:22)
at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4927)
at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5573)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)

Feb 13, 2014 1:41:18 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Feb 13, 2014 1:41:18 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Feb 13, 2014 1:41:18 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2547 ms

所有这些都源自我的 servlet 上下文侦听器:

<!-- CRTool Context listener starts report processing Engine -->
<listener>
    <listener-class>za.co.huge.processor.CRToolContextListener</listener-class>
</listener>

在依赖项目的 Guice 模块上初始化时失败:

/* singleton design pattern - so only one service thread can be running */
private ReportProcessor(final long sleepTime){
    serviceThread = new ServiceThread(sleepTime);
    thread = new Thread(serviceThread);
    thread.setPriority(Thread.MIN_PRIORITY);
    final Injector injector = Guice.createInjector(new     DefaultApplicationModule());
//      final Injector injector = Guice.createInjector(new CommissionsModule(), new     DefaultApplicationModule());
//      ci = injector.getInstance(CommissionsImpl.class);
    }

【问题讨论】:

  • 您是否尝试过 Eclipse 中 Tomcat 的“清洁”选项?你试过重启Tomcat吗?
  • 是的!多次清理并重新运行。
  • 您能否将完整的堆栈跟踪添加到您的问题中?我想到了一些根本原因,但很难猜测是哪一个导致了您的问题。
  • 找出 Eclipse 在哪里部署应用程序(在“服务器”视图中双击服务器运行时),并检查那里部署了什么。可能图书馆根本不在那里。然后将寻求找出为什么不这样做,这在很大程度上取决于您拥有或没有哪些插件。我会检查项目的部署程序集,可能它很不稳定。
  • @Gimby 同意!未部署依赖代码。这正是我想要弄清楚的......

标签: java eclipse tomcat7 classpath


【解决方案1】:

编译代码后,程序中的每个类都会得到.class 文件。这些二进制文件是 Java 解释以执行您的程序的字节码。 NoClassDefFoundError 表示负责动态加载类的类加载器找不到您尝试使用的类的.class 文件。这可能表明您在执行代码时没有设置类路径选项。此链接说明了如何在执行时设置类路径。 http://en.wikipedia.org/wiki/Classpath_%28Java%29

【讨论】:

  • 我的其他具有依赖关系的应用程序运行良好!只是这个网络应用程序停止了工作。当我清理我的部分工作空间并再次从 GIT 下载项目时,可能会发生这种情况。
  • 好的,也许这可以帮助你然后tomcat.apache.org/tomcat-7.0-doc/deployer-howto.html
  • 我的 Tomcat 工作正常...我可以创建一个没有依赖关系的新 Web 应用程序并在 Eclipse 中运行。我也可以构建一个 .war 并将其部署在 Tomcat 上。特别是 Eclipse 和依赖项的链接似乎导致了这个问题。
猜你喜欢
  • 2022-07-28
  • 2012-03-17
  • 2018-10-11
  • 2012-08-12
  • 2012-08-22
  • 1970-01-01
  • 2014-11-02
  • 2016-03-02
  • 1970-01-01
相关资源
最近更新 更多