【问题标题】:Java ClassNotFoundException under Tomcat in EclipseEclipse中Tomcat下的Java ClassNotFoundException
【发布时间】:2015-06-22 04:49:29
【问题描述】:

我已经阅读了所有现有的帖子,这些帖子涉及在 Eclipse 中的 Tomcat 下运行 Java Web 应用程序的 ClassNotFoundException。

我无法提供源代码和配置工件,因为我正在使用专有代码库。但是,通过反复试验,我将问题归结为基本要素。

我的项目被 Maven 打包为 WAR。主包所依赖的工作区中还有许多其他项目。这种安排运行良好:我可以在 Eclipse 中的 Tomcat 实例下部署 WAR 和它所依赖的 JAR,并且应用程序运行并且我可以调试它。

现在我创建了一个新项目,该项目目前包含一个带有公共构造函数的公共类。 Maven 构建工作正常,Eclipse 编译工作区工作正常。但是,当我部署到 Tomcat 并执行一个在新项目中实例化类的执行路径时,我得到了 ClassNotFoundException。

我已经检查了以下项目:

  • 主包项目的 Web 部署程序集将 WEB-INF/lib/ 指定为新项目的部署路径;
  • 新项目的 JAR 实际上最终位于实际部署文件夹下的 WEB-INF/lib/ 文件夹中;
  • 当我在服务器上进行清理和发布时,实际部署文件夹的内容实际上会被删除并重新填充所有正确的 JAR;
  • 我发现新项目的 JAR 部署文件夹中的 WEB-INF/lib 实际上包含我要实例化的类;
  • Tomcat 日志(包括启动周期)除了 ClassNotFoundException 之外没有其他错误;
  • 我已经多次重新完成 Maven 构建并将 Maven 构建应用于 Eclipse 项目;
  • 我已经在 Eclipse 中多次清理和重建;
  • 我已经无数次清理并重新发布到 Eclipse 中的 Web 服务器;
  • 我创建了几个新的服务器实例。

基于对 ClassNotFoundException-in-Tomcat 问题的现有讨论,这些是我发现要检查的唯一内容。我还应该研究什么?

感谢您的帮助。

【问题讨论】:

  • 那么缺少什么类?很可能是版本问题
  • @ScaryWombat:你的意思是 JAR 不包含当前版本的类吗?还是主要项目正在寻找新 JAR 的不同版本?
  • 如果您的 jar1 依赖于 jar2,其中包含方法 doMe,但您包含了 jar2.2 和 jar2.2。里面没有doMe的方法,那你就麻烦了。经常发生在日志罐子上。
  • 您可以使用findjar.com 之类的东西来查找缺少的类所在的 jar 文件 - 以防它不是您自己的项目之一。
  • @ScaryWombat: 伙计,你搞定了。如果我做 jar tf 来列出 jar 的内容,那么类就在那里。但是,如果我使用 javap 检查类,我会得到“找不到类”。但我认为这不像版本控制问题那么简单。

标签: java eclipse maven tomcat


【解决方案1】:

我不确定到底出了什么问题。但是,我最终解决了这个问题,方法是从工作区中删除项目,从头开始重新创建它,并将我的类导入到重新创建的项目中。

【讨论】:

    【解决方案2】:

    即使对我来说也发生了同样的问题......我已经清理了 Tomcat 和 Tomcat 工作目录并再次运行该项目,它工作正常......

    这可能是由于缓存造成的,有时在构建应用程序时没有正确清理。

    有时从 ecrise 中删除项目并从头开始重新导入也可以解决问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 2013-05-18
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      相关资源
      最近更新 更多