2011-08-24 45 views
2

我正在關注來自YouTube的Java Hibernate tutorial示例。在我嘗試運行應該在Apache Derby服務器上創建表Employee的代碼之前,一切看起來都很棒。我試圖先使用SQL服務器(2008),並得到相同的錯誤。 無法解析配置:hibernate.cfg.xml並且還有超時錯誤。我感謝任何幫助。謝謝。如何處理Hibernate中的「無法解析配置」錯誤?

這裏是我的錯誤:

17:28:51,574 INFO Version:15 - Hibernate Annotations 3.4.0.GA 
17:28:51,587 INFO Environment:560 - Hibernate 3.3.2.GA 
17:28:51,590 INFO Environment:593 - hibernate.properties not found 
17:28:51,594 INFO Environment:771 - Bytecode provider name : javassist 
17:28:51,597 INFO Environment:652 - using JDK 1.4 java.sql.Timestamp handling 
17:28:51,648 INFO Version:14 - Hibernate Commons Annotations 3.1.0.GA 
17:28:51,655 INFO Configuration:1474 - configuring from resource: hibernate.cfg.xml 
17:28:51,655 INFO Configuration:1451 - Configuration resource: hibernate.cfg.xml 
17:28:51,702 DEBUG DTDEntityResolver:64 - trying to resolve system-id [http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd] 
Exception in thread "main" org.hibernate.HibernateException: Could not parse configuration: hibernate.cfg.xml 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1542) 
    at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:1035) 
    at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:64) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1476) 
    at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1017) 
    at com.hibernate.chapter1.TestEmployee.main(TestEmployee.java:14) 
Caused by: org.dom4j.DocumentException: Connection timed out: connect Nested exception: Connection timed out: connect 
    at org.dom4j.io.SAXReader.read(SAXReader.java:484) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1532) 
    ... 5 more 

這裏是我的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">org.apache.derby.jdbc.ClientDriver</property> 
     <property name="connection.url">jdbc:derby://localhost:1527/HibernateDb;create=true</property> 
     <property name="connection.username">user</property> 
     <property name="connection.password">password</property> 

     <!-- JDBC connection pool (use the built-in) --> 
     <property name="connection.pool_size">2</property> 

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

     <!-- Enable Hibernate's current session context --> 
     <property name="current_session_context_class">thread</property> 

     <!-- Disable the second-level cache --> 
     <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 

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

     <!-- Drop and re-create the database schema on startup --> 
     <property name="hbm2ddl.auto">create</property> 

    </session-factory> 

</hibernate-configuration> 

而且,這裏是我運行的代碼:

package com.hibernate.chapter1; 
import org.hibernate.cfg.AnnotationConfiguration; 
import org.hibernate.tool.hbm2ddl.SchemaExport; 
public class TestEmployee { 
    public static void main(String[] args) { 
     AnnotationConfiguration config = new AnnotationConfiguration(); 
     config.addAnnotatedClass(Employee.class); 
     config.configure("hibernate.cfg.xml"); 

     new SchemaExport(config).create(true, true); 
    }  
} 

我做錯了什麼?

回答

5

這意味着hibernate.dtd無法解析 - 它的解析在服務器上嘗試。 dtd包含在jar文件中 - 有關如何解決它的信息,請參見herehere

+0

謝謝您的時間回覆。我查看了我的hibernater3.jar,並且有一個名爲「hibernate-configuration-3.0.dtd」的文件,它正是在hibernate.cfg.xml中的聲明中提到的。看着其他帖子,我注意到我使用的路徑是不同的。我的路徑是:http://www.hibernate.org/dtd/而其他人使用:http://hibernate.sourceforge.net/。我改變了路徑,現在一切正常。事情是,我認爲它仍然是從互聯網,而不是我的hibernate3.jar。有沒有辦法強制它從本地資源加載。謝謝。 – bobetko

+0

您的dtd不會從互聯網上被拉出來。您指定的dtd的uri應該與您的jar中存在的dtd中提到的uri匹配。它看起來像和打開到一個網站,但它不是從那裏拉.. –