【问题标题】:Eclipse dynamic web project - MappingNotFoundExceptionEclipse 动态 Web 项目 - MappingNotFoundException
【发布时间】:2011-01-13 03:58:39
【问题描述】:

我有一个 Eclipse 动态 Web 项目,它托管一个简单的 servlet 并在 Tomcat 上运行。我在其中使用 Hibernate - 我的项目中有映射到数据库表和 hbm.xml 文件的类。一切正常 - 我可以使用 Servlet 中的 Hibernate 并通过类修改数据库表。但是现在我想将我的“模型”(SQL 表和映射文件的 Java 类)移动到一个单独的 Eclipse 项目中,以便我可以从其他项目中使用这个“模型”。在我从我的 Web 项目中指定对“模型”项目的引用后,Eclipse 可以看到这些引用并允许我使用类,但是当我在 Tomcat 上部署和运行项目时,总是出现如下错误:

org.hibernate.MappingNotFoundException: 资源: xxx/yyy/zzz/model/MyClassTable.hbm.xml 找不到

我怀疑这是因为我必须将模型的类放到 WEB-INF 目录中,但除了手动执行之外,我不知道该怎么做。在这种情况下,配置 Web Project 的正确方法是什么?

【问题讨论】:

    标签: java eclipse apache http jakarta-ee


    【解决方案1】:

    也就是说,您应该将类​​源文件和任何其他资源(如 .hbm.xml 文件)放在项目的 src 文件夹中。然后,Eclispe 将“自动”将它们放在 /WEB-INF/classes 中。或者,如果您想从项目中分离配置文件,则只需将其放在项目外部的固定路径中,并将此路径添加到服务器的运行时类路径

    【讨论】:

      【解决方案2】:

      它需要在/WEB-INF/classes 中,而不是在/WEB-INF 中。

      也就是说,您应该将类​​源文件和任何其他资源(如 .hbm.xml 文件)放在项目的 src 文件夹中。然后,Eclispe 将“自动”将它们放入/WEB-INF/classes。或者,如果您想从项目中分离配置文件,那么只需将其放在项目外部的某个固定路径中,然后将此路径添加到服务器的运行时类路径中。在 Tomcat 中,您可以在 /conf/catalina.propertiesshared.loader 属性中管理这些路径。

      【讨论】:

      • 如何在 Eclipse 中添加这个路径?我不想推迟这个很好的 Eclipse Tomcat 合作,我可以在其中动态部署项目。我不想干扰 Tomcat 配置。有没有办法引用其他 Eclipse 项目,以便将其配置文件和类“自动”放入 WEB-INF/classes 中?
      • 如前所述,放入项目的src 文件夹。你所有的包和剩余的源代码都在那里。根据异常消息,您应该将hbm.xml 文件放在包xxx.yyy.zzz.model 中。
      • 对我来说,这不是一个可接受的解决方案。这会产生冗余,因为我需要将代码加倍。我发现 Eclipse“src 链接”是我需要的。它不需要复制代码,您只需链接到目录。
      • 那为什么还要加倍代码呢? src 文件夹最终将位于 /WEB-INF/classes。可能在 src 或源文件夹这个术语中有一些歧义。看,如果您在 Eclipse 中创建一个动态 Web 项目,您将获得一个源文件夹和一个 Web 内容文件夹。源文件夹是您放置源代码(包、类等)的地方。当 Eclipse 导出 WAR 时,它们都将登陆 /WEB-INF/classes
      猜你喜欢
      • 1970-01-01
      • 2021-06-23
      • 2014-10-07
      • 2011-11-08
      • 1970-01-01
      • 2023-03-09
      • 2011-05-09
      • 2015-01-27
      • 2011-12-06
      相关资源
      最近更新 更多