2011-10-20 50 views
8

我一直在使用Spring JDBC取得了巨大的成功,但是我對這個項目有很多麻煩。我會在這裏發佈的代碼鏈接(這只是一個小的和愚蠢的項目來測試,如果我能得到它運行起來,這樣我可以在未來使用Hibernate):使用Spring Hibernate的問題

XML文件:http://codepaste.net/uw19zc

主文件:http://codepaste.net/iks1cp

我得到噸的錯誤,如

[Fatal Error] bean2.out.xml:1:1: Premature end of file. 
13:21:39,471 FATAL [main] Main - getAssociatedStylesheets failed 

,我沒有創建a.out.xml文件。

+1

發佈的XML和錯誤,你是在得到之間隱藏的性格你的問題請 –

回答

41

此錯誤是由於對xml文件的解析不正確。 使用Eclipse來驗證它給人的錯誤:

cvc-complex-type.2.3: Element 'beans' cannot have character [children], because the type's content type is element-only.

似乎有一些奇怪的字符中的一個或多個的<bean>聲明之間。你是否從其他地方複製過這些文字?

刪除<bean>定義之間的所有空格和換行符,並將其放回到您的編輯器中。

UPDATE 複製&粘貼到記事本中++您提供的codepaste文字和字符集設置爲UTF-8顯示,在空行這些字符:XA0。這是&nbsp;的標準Unicode轉換。這可能是造成這個問題的原因。

這對我驗證OK:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
         http://www.springframework.org/schema/beans/spring-beans.xsd"> 
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
     destroy-method="close"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://localhost:3306/HibernateDB" /> 
     <property name="username" value="HibernateDB" /> 
     <property name="password" value="java" /> 
    </bean> 
    <bean id="sessionFactory" 
     class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" /> 
     <property name="annotatedClasses"> 
      <list> 
       <value>hdao.HibernateObject</value> 
      </list> 
     </property> 
    </bean><bean id="springHibernateOperator" class="hdao.SpringHibernateOperatorImplementation"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 
</beans> 
+0

很好的答案!雖然現在發生了一些奇怪的事當我的主要方法嘗試安裝ClassPathXmlApplicationContext時,我收到異常: 線程「main」中的異常org.springframework.beans.factory.BeanCreationException:在類路徑資源[bean2.xml]中定義名稱爲'sessionFactory'的bean時創建錯誤:Invocation初始化方法失敗;嵌套異常是java.lang.NoClassDefFoundError:javax/persistence/Cacheable 我不明白爲什麼,我沒有正確寫入xml文件? –

+0

同樣的錯誤在[這裏]討論(http://www.coderanch.com/t/509836/ORM/java/Hibernate-java-lang-ClassNotFoundException-javax)。確保你有[hibernate-jpa-2.0-api-1.0.0.Final](http://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.0-api/1.0 .0.Final)jar在你的classpath/maven依賴項中。該類也存在於[Java EE 6 api jar]中(http://repo1.maven.org/maven2/javax/javaee-api/6.0/javaee-api-6.0.jar)。此外,您可能想要接受此答案併發布有關此問題的其他問題。 –

+0

你是對的,我解決了它,但我會接受答案,謝謝=) –

7

如果你在Linux上,使用cat -v file-name.xml檢測您的XML文件,如 'M-BM-' 特殊的 「隱形」 字

2

有時有在一些教程的網站上覆制的依賴關係或一些bean定義中的隱藏字符。最好的辦法,找出那些隱藏人物做了`

ctrl + shift + F

這將格式化您的文檔,你可以看到在一些標籤 `