开发日志:使用MyEclipse开发JavaWeb,无论怎么改Java代码都不生效,Tomcat报ClassNotFoundException错误

来源:互联网 发布:angularjs遍历json 编辑:程序博客网 时间:2024/04/26 03:34

今天开发遇到这个奇葩的问题,弄了很久,开始的时候一直以为代码出错,后来在新增加的判断处加入了断点,发现

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将所有的复选框选中


0 0
原创粉丝点击