今天在调试别人写的一个,使用了hibernate的java web项目时,运行发现报错“java.lang.NoSuchFieldError: INSTANCE”
检查发现数据库什么的都没有问题,包也都有。(hibernate开发八个必须的包:hibernate3.jar,cglib-asm.jar,dom4j.jar,odmg.jar,commons-collections.jar,commons-beanutils.jar,commons-lang.jar,commons-logging.jar)
有大神说是配置文件里的class里的属性名拼写错误了,即映射文件里边的映射列名与数据库中的列名不匹配导致的,但实际上我的配置文件也没有问题。。。。
最后发现是包有冲突了。。。这个包hibernate3.jar,里面已经包含annotations相关包,与老版本冲突。
而项目中重复引用了 hibernate-annotations.jar 和 hibernate-commons-annotations.jar,所以只要删掉hibernate-annotations.jar 和 hibernate-commons-annotations.jar即可。
但是,但是,好像问题就这么结束了,但是我在项目里删掉了这俩包以后,项目名称上出现了一个显眼的小红感叹号!!!不管它继续运行项目,结果就报错了啊…………这个感叹号一定在捣怪
查阅资料发现,小感叹号的出现时因为项目中包括了要引用的包的信息(包括刚刚删掉的俩包的信息),但是刚刚那俩包被我删了,myeclipse就觉得要出问题了。。。。。而配置信息就是这个.classpath 配置文件。
让我们代表月亮消灭这个感叹号!!!右键单击你的web工程,找到 Build Path > Configure Build Paht... > 然后上面有几个选项卡找到 Libraries。 这里看到的就是你工程里面引用的所有的 jar ,看是不是在某个jar图标上有个很小的黄色的感叹号?
如果有的话就没错了, 先选中这个jar, 点击右边的 Remove > 点击OK ,耶,成功啦~~~~~(*^__^*)