最近的JAVA工程中用到了DB4O,確實是一個不錯的資料庫,第一次用到儲存物件的資料庫感到還挺新鮮的,對一個ObjectContainer進行基本的操作,理解起來要比關聯式資料庫來得直觀。但是使用這種資料庫很容易產生資料的冗餘,不然的話查詢起來也挺麻煩的;另外在資料的更新方面也要十分小心,資料很容易因為疏忽沒有寫進資料庫。
在利用它進行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目錄下,這樣編譯才會通過。
建議還是使用ECLIPSE等工具,直接在伺服器上運行和測試,沒有問題後將WebContent下的東西拷到伺服器目錄下,方便查錯,同時也減少類似於上述的錯誤。
給自己提個醒,也希望對於其他朋友有所協助650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/15331R292-0.gif" type="face" alt="java.lang.ClassCastException解決方案" title="java.lang.ClassCastException解決方案" />
本文出自 “沉澱” 部落格,請務必保留此出處http://jupiterbee.blog.51cto.com/3364619/1289638