最近的JAVA工程中用到了DB4O,確實是一個不錯的數據庫,第一次用到存儲對象的數據庫感到還挺新鮮的,對一個ObjectContainer進行基本的操做,理解起來要比關係數據庫來得直觀。可是使用這種數據庫很容易產生數據的冗餘,否則的話查詢起來也挺麻煩的;另外在數據的更新方面也要十分當心,數據很容易由於疏忽沒有寫進數據庫。java
在利用它進行WEB開發的過程當中,遇到了一個很奇怪的問題:執行下面的語句web
ObjectSet<Ids> allIds =db.queryByExample(Ids.class);數據庫
此語句查詢數據庫中全部的Ids類的對象,可是很奇怪,返回的是com.db4o.reflect.generic.GenericObject,直接致使後面的賦值出現了問題。爲何會出現這個問題呢?我琢磨了很久,最後終於在不斷的嘗試後發現了問題,問題在於db4o-7.12.145.14409-all-java5這個JAR包在%JAVA_HOME%/jre/lib/ext下和WEB工程的WEB-INF\lib目錄下都存在,致使衝突的產生,將任意一個刪除便可解決問題,這也許不是一個特例,在其餘的狀況下不知道會不會遇到這樣的錯誤。服務器
可是從web工程的角度來說,最好仍是將所須要的jar文件放置在對應工程的WEB-INF\lib目錄下,方便web工程的轉移,也使得工程的依賴結構清晰,減小沒必要要的麻煩。固然,若是web工程所需的servlet須要直接在工程下產生,這時就須要將所需的外部JAR放置到jre/lib/ext目錄下,這樣編譯纔會經過。ide
建議仍是使用ECLIPSE等工具,直接在服務器上運行和測試,沒有問題後將WebContent下的東西拷到服務器目錄下,方便查錯,同時也減小相似於上述的錯誤。工具
給本身提個醒,也但願對於其餘朋友有所幫助測試