我有一個JPA的小測試應用程序,Hibernate堅持Oracle XE。這一切工作正常。未配置Derby.jar異常?
但是,當classpath包含derby.jar時,雖然我沒有專門調用derby中的任何東西,但我知道這個異常。
顯然,德比試圖加載。但是我沒有調用任何Derby初始化,也沒有爲JPA配置Derby。根據Derby文檔,「在嵌入式環境中,加載驅動程序也啓動了Derby。」
但我沒有向德比請求任何東西。我從persistence.xml中刪除了derby持久化單元。然而,隨着derby.jar的繼續前行,它會爆炸。如果從路徑中刪除derby.jar,則爲Oracle定義的持久性單元可以正常工作。
我發現在德比文檔或在線沒有任何相關的。
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.apache.derby.jdbc.AutoloadedDriver40
我之所以在類路徑中的derby.jar是,我試圖定義有兩個聲明,Oracle和德比的persistence.xml,這樣我就可以在一個測試工具測試兩個數據庫演示即將推出的項目的兼容性,該項目將在便攜式機器上使用Oracle內部和Derby。
的persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="persistenceUnit">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.gdeb.swift.NIIN</class>
<class>com.gdeb.swift.RIC</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="javax.persistence.jdbc.user" value="swift" />
<property name="javax.persistence.jdbc.password" value="swift" />
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="oracle.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
<property name="hibernate.max_fetch_depth" value="3" />
</properties>
</persistence-unit>
</persistence>