2011-10-20 18 views
8

Używam Spring JDBC z wielkim sukcesem, ale mam wiele problemów z tym projektem. Będę dodawać linki kod tutaj (to tylko mały i głupi projekt aby sprawdzić, czy mogę dostać się i działa tak, że można używać Hibernacja w przyszłości):Problemy z Spring Hibernate

xml-file: http://codepaste.net/uw19zc

main-file: http://codepaste.net/iks1cp

dostaję mnóstwo błędów takich jak

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

a ja nie utworzono plik a.out.xml.

+1

publikowania xml i błędów, że dostaniesz w swoje pytanie proszę –

Odpowiedz

41

Ten błąd jest spowodowany niepoprawnym analizowaniem pliku xml. Korzystanie Eclipse, aby go zatwierdzić daje błąd:

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

Wydaje się, że w jakiś dziwny znak pomiędzy jednym lub wielu z tych deklaracji <bean>. Czy skopiowałeś ten tekst z innego miejsca?

Usuń wszystkie spacje i znaki nowej linii między definicjami <bean> i odłóż je ze swoim edytorem.

UPDATE Kopiowanie & wklejanie do Notepad ++ tekstem codepaste podałeś i ustawienie kodowania UTF-8 pokazał te znaki w pustej linii: xA0. Jest to standardowe tłumaczenie Unicode dla &nbsp;. Prawdopodobnie jest to przyczyną tego problemu.

ten sprawdza ok dla mnie:

<?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

Świetna odpowiedź! Chociaż teraz stało się coś dziwnego. Gdy moja główna metoda próbuje utworzyć instancję klasy ClassPathXmlApplicationContext, otrzymuję wyjątki: Wyjątek w wątku "główny" org.springframework.beans.factory.BeanCreationException: Błąd podczas tworzenia komponentu bean o nazwie 'sessionFactory' zdefiniowany w ścieżce klasy resource [bean2.xml]: Inwokacja metody init nie powiodło się; Zagnieżdżony wyjątek to java.lang.NoClassDefFoundError: javax/persistence/Cacheable Nie rozumiem, dlaczego nie napisałem poprawnie pliku xml? –

+0

Ten sam błąd jest omawiany [tutaj] (http://www.coderanch.com/t/509836/ORM/java/Hibernate-java-lang-ClassNotFoundException-javax). Upewnij się, że masz [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 w twoich zależnościach classpath/maven. Ta klasa jest również obecna w [Java EE 6 api jar] (http://repo1.maven.org/maven2/javax/javaee-api/6.0/javaee-ap-6.0.jar).Możesz również zaakceptować tę odpowiedź i opublikować kolejne pytanie dotyczące tej kwestii. –

+0

Masz rację, rozwiązałem to, ale przyjmuję odpowiedź, dziękuję =) –

7

Jeśli jesteś w Linuksie, użyj cat -v file-name.xml wykryć specjalne „niewidzialne” znaki takie jak „” M-BM w pliku xml

2

Czasami są ukryte znaki w zależnościach lub definicje niektórych komponentów, które kopiujesz z witryny samouczka. Najlepszym sposobem, aby dowiedzieć się tych ukrytych znaków zrobić `

ctrl + shift + F

będzie formatowanie dokumentu i widać, że ukrytą postać w między jakimś tagu `

Powiązane problemy