本文介绍了Hibernate:无法解析配置:hibernate.cfg.xml?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当试图在我的应用程序中使用 Hibernate 时出现以下错误:

  org.hibernate.HibernateException:无法解析配置:hibernate.cfg.xml 

这是什么造成的?请参阅 hibernate.cfg.xml 输出 Runner类 below?



注意:我已经看过

 <?xml version = 1.0encoding =UTF-8?> 
<!DOCTYPE hibernate-configuration PUBLIC
- // Hibernate / Hibernate配置DTD 3.0 // EN
http://hibernate.sourceforge.net/hibernate-configuration-3.0 .dtd>
< hibernate-configuration>
< session-factory>
< property name =hibernate.connection.driver_class> com.mysql.jdbc.Driver< / property>
< property name =hibernate.connection.url> jdbc:mysql:// localhost:3306 / hibernatex< / property>
< property name =hibernate.connection.username>根< / property>
< property name =hibernate.connection.password>根< / property>
< property name =hibernate.dialect> org.hibernate.dialect.MySQLDialect< / property>
< mapping resource =com / ora / hibernate / examples / Employee.hbm.xml
package =com.ora.hibernate.examples/>
< / session-factory>
< / hibernate-configuration>


I am getting the following error when trying to use Hibernate withing my application:

org.hibernate.HibernateException: Could not parse configuration: hibernate.cfg.xml

What is causing this? Please see hibernate.cfg.xml , output and Runner class below?

Note: I have looked at this answer and tried to fix it using suggestions, but with no luck.

hibernate.cfg.xml:

<?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

    <hibernate-configuration>
        <session-factory>

            <!-- Database connection settings -->
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/test-db</property>
            <property name="connection.username">user</property>
            <property name="connection.password">password</property>

            <!-- SQL dialect -->
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

            <!-- Echo all executed SQL to stdout -->
            <property name="show_sql">true</property>

            <!-- Use XML-based mapping metadata -->
            <!-- <mapping resource="domain/Message.hbm.xml"/> -->

            <!-- Use Annotation-based mapping metadata -->
            <mapping class="entity.Message"/>

        </session-factory>
    </hibernate-configuration>

Output:

Successfully started process 'command 'C:\Program Files\Java\jdk1.8.0_65\bin\java.exe''
Dec 16, 2015 12:01:20 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.4.Final}
Dec 16, 2015 12:01:20 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.5.Final}
Dec 16, 2015 12:01:21 AM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Dec 16, 2015 12:01:21 AM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Dec 16, 2015 12:01:21 AM org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: hibernate.cfg.xml
Dec 16, 2015 12:01:21 AM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: hibernate.cfg.xml
Initial SessionFactory creation failed.org.hibernate.HibernateException: Could not parse configuration: hibernate.cfg.xml
Exception in thread "main" java.lang.ExceptionInInitializerError
    at util.HibernateUtil.buildSessionFactory(HibernateUtil.java:25)
    at util.HibernateUtil.<clinit>(HibernateUtil.java:12)
    at client.HelloWorldClient.main(HelloWorldClient.java:13)
Caused by: org.hibernate.HibernateException: Could not parse configuration: hibernate.cfg.xml
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2163)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:2075)
    at util.HibernateUtil.buildSessionFactory(HibernateUtil.java:18)
    ... 2 more
Caused by: org.dom4j.DocumentException: Error on line 2 of document  : The processing instruction target matching "[xX][mM][lL]" is not allowed. Nested exception: The processing instruction target matching "[xX][mM][lL]" is not allowed.
    at org.dom4j.io.SAXReader.read(SAXReader.java:482)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2155)
    ... 4 more
:run FAILED
:run (Thread[Daemon worker Thread 15,5,main]) completed. Took 0.617 secs.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':run'.
> Process 'command 'C:\Program Files\Java\jdk1.8.0_65\bin\java.exe'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.

BUILD FAILED

Runner Class:

package client;

import org.hibernate.Session;

import util.HibernateUtil;
import entity.Message;


public class HelloWorldClient {
    public static void main(String[] args) {

                Session session = HibernateUtil.getSessionFactory().openSession();
                session.beginTransaction();

                Message message = new Message( "Hello World with Hibernate & JPA Annotations" );

                session.save(message);

                session.getTransaction().commit();
                session.close();

    }
}

Edit: Error seen when hovering over session-factory tag :

解决方案

Can you check with the below CFG file which I have used and make sure the CFG file will present under the SRC directory. If you are keeping in another directory, make sure you are passing the path while getting configuration instance.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property>
        <property name="hibernate.connection.url"> jdbc:mysql://localhost:3306/hibernatex </property>
        <property name="hibernate.connection.username"> root </property>
        <property name="hibernate.connection.password"> root </property>
        <property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </property>
        <mapping resource="com/ora/hibernate/examples/Employee.hbm.xml"
          package="com.ora.hibernate.examples" />
     </session-factory>
</hibernate-configuration>

这篇关于Hibernate:无法解析配置:hibernate.cfg.xml?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-13 08:34