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);
}
}
我做錯了什麼?
謝謝您的時間回覆。我查看了我的hibernater3.jar,並且有一個名爲「hibernate-configuration-3.0.dtd」的文件,它正是在hibernate.cfg.xml中的聲明中提到的。看着其他帖子,我注意到我使用的路徑是不同的。我的路徑是:http://www.hibernate.org/dtd/而其他人使用:http://hibernate.sourceforge.net/。我改變了路徑,現在一切正常。事情是,我認爲它仍然是從互聯網,而不是我的hibernate3.jar。有沒有辦法強制它從本地資源加載。謝謝。 – bobetko
您的dtd不會從互聯網上被拉出來。您指定的dtd的uri應該與您的jar中存在的dtd中提到的uri匹配。它看起來像和打開到一個網站,但它不是從那裏拉.. –