【问题标题】:Classes not loading from Jar file on TomCat类未从 TomCat 上的 Jar 文件加载
【发布时间】:2019-02-27 22:22:56
【问题描述】:

我正在尝试从 webLogic 迁移到 Tomcat,并创建了 2 个动态项目,即项目 1 和项目 2。项目 1 部署在 Tomcat 上,但需要项目 2 的资源才能运行。

我在 web.xml 下面几行代码

<display-name>project 1</display-name>
<description>Project 1 Application</description>

<!-- Http session monitor -->
<listener>
    <listener-class>HttpSessionMonitor</listener-class>
</listener>

但是当我启动 tomcat 时,我得到“No Class Def found Error”

我尝试了以下方法来解决这个问题,但都没有奏效。

  1. 在项目 1 的构建路径中添加了项目 2 的 Jar 文件。
  2. 在项目1的Deployment Assembly中添加了项目2的Jar文件,项目2的jar文件即project2.jar出现在WEB_INF/lib文件夹中。
  3. 在项目 1 中新建文件夹,并链接项目 2 的资源

对这个错误有什么建议吗? 我的项目 1 如此紧密地依赖于项目 2 以至于没有项目 2 , 1 是如此愚蠢。

【问题讨论】:

    标签: java eclipse tomcat


    【解决方案1】:

    经过更多研究,我找到了自己的答案。

    Tomcat 类加载器正在按以下顺序加载资源

    因此,从 Web 应用程序的角度来看,类或资源加载按以下顺序查看以下存储库:

    • JVM 的引导类
    • /WEB-INF/Web 应用程序的类
    • /WEB-INF/lib/*.jar 您的 Web 应用程序
    • 系统类加载器类(如上所述)
    • 通用类加载器类(如上所述)

    如果配置了 web 应用程序类加载器,则顺序变为:

    • JVM 的引导类
    • 系统类加载器类(如上所述)
    • 通用类加载器类(如上所述)
    • /WEB-INF/Web 应用程序的类
    • /WEB-INF/lib/*.jar 您的 Web 应用程序

    当我将我的类文件放在 WEB-INF/classes 文件夹中时,它就开始工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 2012-09-11
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 2017-04-11
      相关资源
      最近更新 更多