最近的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下的东西拷到服务器目录下,方便查错,同时也减小相似于上述的错误。工具
给本身提个醒,也但愿对于其余朋友有所帮助测试