简体   繁体   English

org.hibernate.MappingNotFoundException:resource:*找不到hbm.xml

[英]org.hibernate.MappingNotFoundException: resource: *hbm.xml not found

JBoss AS 7.0.1.Final, Hibernate 3. We have a MySQL datasource. JBoss AS 7.0.1.Final,Hibernate 3.我们有一个MySQL数据源。

I have mapping resources pointing to *hbm.xml files. 我有映射资源指向* hbm.xml文件。 I get deployment errors that tell me 'resource: *hbm.xml not found', so entities are not being mapped correctly - this stack trace is due to the User.hbm.xml not being found, 我得到部署错误,告诉我'资源:*找不到hbm.xml',因此实体未正确映射 - 此堆栈跟踪是由于找不到User.hbm.xml,

14:44:34,654 INFO  [org.hibernate.cfg.Configuration] (MSC service thread 1-9) HHH00042:Configuring from file: hibernate.cfg.xml
14:44:34,668 WARN  [org.hibernate.internal.util.xml.DTDEntityResolver] (MSC service thread 1-9) HHH00223:Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
14:44:34,670 INFO  [org.hibernate.cfg.Configuration] (MSC service thread 1-9) HHH00221:Reading mappings from resource: User.hbm.xml
14:44:34,697 SEVERE [com.mycompany.myapp.common.persistence.HibernateUtil] (MSC service thread 1-9) Initial SessionFactory lookup failed.: org.hibernate.MappingNotFoundException: resource: User.hbm.xml not found
      at org.hibernate.cfg.Configuration.addResource(Configuration.java:720) [hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
      at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2083) [hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
      at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2055) [hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
      at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2035) [hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
      at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1988) [hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
      at org.hibernate.cfg.Configuration.configure(Configuration.java:1961) [hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
      at com.mycompany.myapp.common.persistence.HibernateUtil.<clinit>(HibernateUtil.java:42) [classes:]
      at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:216) [classes:]
      at com.mycompany.myapp.common.servlet.SecurityFilter.init(SecurityFilter.java:55) [classes:]
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3836) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
      at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]
      at java.lang.Thread.run(Thread.java:680) [:1.6.0_26]


14:44:34,698 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/myapp-maventest]] (MSC service thread 1-9) Exception starting filter EnterpriseSecurityFilter: java.lang.NoClassDefFoundError: Could not initialize class com.mycompany.myapp.common.persistence.HibernateUtil
      at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:224) [classes:]
      at com.mycompany.myapp.common.servlet.SecurityFilter.init(SecurityFilter.java:55) [classes:]
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3836) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
      at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]
      at java.lang.Thread.run(Thread.java:680) [:1.6.0_26]


14:44:34,699 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/myapp-maventest]] (MSC service thread 1-9) Exception starting filter CompanySecurityFilter: java.lang.NoClassDefFoundError: Could not initialize class com.mycompany.myapp.common.persistence.HibernateUtil
      at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:224) [classes:]
      at com.mycompany.myapp.common.servlet.SecurityFilter.init(SecurityFilter.java:55) [classes:]
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3836) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
      at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]
      at java.lang.Thread.run(Thread.java:680) [:1.6.0_26]


14:44:34,701 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/myapp-maventest]] (MSC service thread 1-9) Exception starting filter StationSecurityFilter: java.lang.NoClassDefFoundError: Could not initialize class com.mycompany.myapp.common.persistence.HibernateUtil
      at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:224) [classes:]
      at com.mycompany.myapp.common.servlet.SecurityFilter.init(SecurityFilter.java:55) [classes:]
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3836) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
      at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]
      at java.lang.Thread.run(Thread.java:680) [:1.6.0_26]


14:44:34,702 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/myapp-maventest]] (MSC service thread 1-9) Exception starting filter StudioSecurityFilter: java.lang.NoClassDefFoundError: Could not initialize class com.mycompany.myapp.common.persistence.HibernateUtil
      at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:224) [classes:]
      at com.mycompany.myapp.studio.StudioSecurityFilter.init(StudioSecurityFilter.java:46) [classes:]
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3836) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
      at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]
      at java.lang.Thread.run(Thread.java:680) [:1.6.0_26]

Our project is structured like 我们的项目结构如下

Project
|
|-pom.xml
|
|-src
|  |-main
|     |-java
|     |   |-com... businessobjects
|     |-resources
|     |   |-META-INF
|     |-webapp
|
|-test

we have hibernate.cfg.xml in src/main/resources/META-INF, and various *.class and *hbm.xml in src/main/java/com/businessobjects/. 我们在src / main / resources / META-INF中有hibernate.cfg.xml,在src / main / java / com / businessobjects /中有各种* .class和* hbm.xml。 Our hibernate.cfg.xml looks like 我们的hibernate.cfg.xml看起来像

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="datasourceName">java:jboss/datasources/MySqlDS</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <mapping resource="com/mycompany/myapp/common/businessobjects/User.hbm.xml"/>
        <mapping resource="com/mycompany/myapp/common/businessobjects/Company.hbm.xml"/>
        <mapping resource="com/mycompany/myapp/common/businessobjects/ServerSettings.hbm.xml"/>
        <mapping resource="com/mycompany/myapp/common/businessobjects/Station.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

I've tried different paths to point to the *hbm.xml files - none seem to work. 我尝试过不同的路径来指向* hbm.xml文件 - 似乎都没有用。 I've even tried giving it the absolute path to the *hbm.xml files, that didn't work either. 我甚至试过给它一个* hbm.xml文件的绝对路径,这也没用。

I've also tried copying the *hbm.xml into the same directory as hibernate.cfg.xml - that also didn't work, same error. 我也尝试将* hbm.xml复制到与hibernate.cfg.xml相同的目录中 - 这也没有用,同样的错误。

Looks like it errors out at this point in the code of my HibernateUtil class 看起来它在我的HibernateUtil类的代码中出错了

static {
    try {
        InitialContext ctx = new InitialContext();
        Configuration configuration = new Configuration();
        Properties properties = new Properties();
        sessionFactory = configuration.configure(
            new File("/path/to/src/main/resources/META-INF/hibernate.cfg.xml")
            ).buildSessionFactory();
    } catch (Throwable ex) {
        // Make sure you log the exception, as it might be swallowed
        log.error("Initial SessionFactory lookup failed.", ex);
        throw new ExceptionInInitializerError(ex);
    }
}

Any ideas what's going on? 有什么想法发生了什么? Thanks 谢谢

Move your mapping files into src/main/resources. 将映射文件移动到src / main / resources中。 Only .java files belong in src/main/java. 只有.java文件属于src / main / java。

Edit: I've set up an example project on github showing how to correctly reference XML mapping files from a hibernate.cfg.xml. 编辑:在github上设置了一个示例项目,展示了如何从hibernate.cfg.xml正确引用XML映射文件。

Maven only processes .java files from src/main/java, so putting the .hbm.xml files into that part of the tree means they won't end up in the war file. Maven只处理来自src / main / java的.java文件,因此将.hbm.xml文件放入树的那一部分意味着它们不会最终出现在war文件中。

Maven picks up config files from src/main/resources and as you've mapped the .hbm.xml files with a path, they would need to go into src/main/resources/com/mycompany/myapp/common/businessobjects . Maven从src / main / resources中获取配置文件,并且当您使用路径映射.hbm.xml文件时,他们需要进入src/main/resources/com/mycompany/myapp/common/businessobjects

Hope that helps. 希望有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 错误org.hibernate.MappingNotFoundException:资源:找不到name.hbm.xml - Error org.hibernate.MappingNotFoundException: resource: name.hbm.xml not found 休眠给我-“主要” org.hibernate.MappingNotFoundException:资源:找不到hibernate_hbm.xml.UserDetails.hbm.xml - hibernate is giving me - “main” org.hibernate.MappingNotFoundException: resource: hibernate_hbm.xml.UserDetails.hbm.xml not found org.hibernate.MappingNotFoundException:资源:找不到com / ypd / a / entity / Employee.hbm.xml - org.hibernate.MappingNotFoundException: resource: com/ypd/a/entity/Employee.hbm.xml not found org.hibernate.MappingNotFoundException:资源:找不到com / corp / dept / proj / FooTbl.hbm.xml - org.hibernate.MappingNotFoundException: resource: com/corp/dept/proj/FooTbl.hbm.xml not found org.hibernate.MappingNotFoundException:资源:找不到hibernate.cfg.xml - org.hibernate.MappingNotFoundException: resource: hibernate.cfg.xml not found org.hibernate.MappingNotFoundException - org.hibernate.MappingNotFoundException 休眠:org.hibernate.MappingNotFoundException - Hibernate: org.hibernate.MappingNotFoundException 线程“main” org.hibernate.boot.MappingNotFoundException 中的异常:未找到映射(资源):allinone.hbm.xml:起源(allinone.hbm.xml) - Exception in thread "main" org.hibernate.boot.MappingNotFoundException: Mapping (RESOURCE) not found : allinone.hbm.xml : origin(allinone.hbm.xml) 无法解析在休眠中找不到MappingNotFoundException:resource:/login.hbm.xml - unable to resolve MappingNotFoundException :resource:/login.hbm.xml not found in hibernate MappingNotFoundException:资源:找不到user.hbm.xml - MappingNotFoundException: resource: user.hbm.xml not found
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM