今天开发遇到这个奇葩的问题,弄了很久,开始的时候一直以为代码出错,后来在新增加的判断处加入了断点,发现
if( obj ==null){
//代码...
}
obj肯定为nul的情况下,竟然也不会执行 //代码 里面的内容,BUG直接跳出判断,重启后都不行,后来clean了一下,更奇葩的问题出现了:Tomcat启动报错误【java.lang.ClassNotFoundException: com.gdcy.servlet.CheckSessionServlet】
后来跑到WebRoot\WEB-INF\classes 发现classes的文件夹竟然是空的,那么造成上述问题的原因找到了:代码不改变,是因为MyEclipse没有更新class的内容,而clean之后,由于不明原因的错误,MyEclipse清空了classes里的class文件,导致加载至Tomcat的web项目下的classes也为空,因此启动报java.lang.ClassNotFoundException: com.gdcy.servlet.CheckSessionServlet错
那么解决问题
说起来classes为空已经是这周内第二次遇到的问题了,第一次原因是svn导入项目时,出现无论怎么编译,classes都为空,且不报错,弄了很久,最后在朋友的帮助下,找到了原因,在导入的包中,有一个jar包是missing的,最后在
在Order and Export找到带红叉的包,在Libraries将其删除
而这次的情况比较奇葩,属于下面的第6点
我先删除JRE System Library
然后再
选择Add Library,选择JRE System Library
Next
完成
这时MyEclipse开始编译,发现classes的文件终于出现了,很小心地去clean,正常了
这是网上找到的不少造成原因和解决方法
MyEclipse不编译解决
1. 确保project->build automatically已经被选上
2. 如果选上了,也不好使,使用这一招: project->clean..->选第2个clean select project,
勾上start build immediatelly MyEclipse
3.删除现在的项目,提前设置好编译文件输出路径,重新导入源文件,设置
MyEclipse为保存时编译,然后在保存的时候就可以自动编译了
4.如果项目里引了某个不用的jar包,而那个包又被你删了,就会出现不报错但怎么也编译不出来class文件的情况,可以把所有包都删除,然后一个一个的再引入(需要的),
不要一下子把所有包都引入来,没用的可能会引起不良后果.
5. 想删掉某个class文件重新生成,删除class文件后,但classes目录下的文件夹被其它程序打开,比如Total Commander。此时编译也不会通过,在problems下可能会提示“con''t delete classes „„”。关掉其它程序重新编译即可。
6.还有种情况是remove掉 JRE System Library,重新导入即可编译。但是什么原因导致的还不清楚。
7.把build path中所有包都remove掉。然后又add jars,add libraries把需要的加进去,居然又开始编译了。。。
8.project->properties->java build path->source->.../WEB-INF/src的output folder不要默认,编辑让它指向../WEB-INF/classes 然后重新点击build工程即可自动编译。
MyEclipse
9.再就是最重要的要看工程下面是否缺少了work目录,由于CVS控制时不把work加如版本,所以checkout后没有这个目录,要手工加上有的工程就能自动编译了
"Problems"标签,如果里面说缺少work目录,手工加上,然后刷新项目就可以了. 还有个jar和path的问题最终解决办法为选项目——右键——属性——java build path——order and export将所有的复选框选中