NetBeans下的一个隐密BUG

开发工具 December 19 2012


今天把netbeans中的一个JAVA SE工程源码中的部分类的包名进行了重构,并重新上传到bitbucket仓库,本以为这样一个小小的常规操作不会出现任何问题,但吊诡的事情依然发生了。 问题描述:比如,我的实体类所在包名为com.ichatter.entity,重构之后为com.ichatter.crm.entity。代码一切正常,随后是清理、生成,一切正常,但运行时竟然出现了java.lang.ClassNotFoundException:com.ichatter.entity.SysUser,可以看出,IDE运行程序时没找到SysUser这个实体类。 问题分析:这个异常显示的SysUser类包名依然为我重构之前的包名com.ichatter.entity.SysUser,也就是说NetBeans虽然对代码清理生成时能够正确认识到这个重构后的类,但运行时却无法识别,于是报错,这显然是NetBeans的责任。为了确定这个问题不是偶然发生,我对此工程进行了多次清理并生成,甚至重启电脑,问题依然如故。于是进入工程所在文件夹对生成的工程jar包在NetBeans之外运行,程序启动正常,也就是说,我单独使用操作系统的JRE运行是没有任何问题的,但NetBeans可能由于缓存了旧有的工程文件导致这个错误,基本可以确定,这是NetBeans的BUG。 问题解决:既然NetBeans在运行工程时依然识别的是旧代码,那我就把NetBeans相关目录下的配置信息全部删除。比如,我用的是windows7,在C盘根目录下搜索NetBeans关键字,将搜索出来的C:\Users\henry.netbeans目录及C:\Users\henry\AppData\Local\NetBeans目录全部删除,重启NetBeans,再次清理,生成,运行,一切正常!

原文链接:http://ichatter.cn/netbeans-e4-b8-8b-e7-9a-84-e4-b8-80-e4-b8-aa-e9-9a-90-e5-af-86bug.html


欢迎来到阿J小虫的博客

Follow @ichatter on GitHub

最新评论

推荐内容