今天学servlet,发现在做测试的时候出现了一个异常,如题目,具体报错如下:
很慌,没遇到过这种情况..
展开分析:
报错名称翻译成中文叫:实例化servlet类异常
哦,原来错误出在servlet类实例化的上面了,看来不是我html代码或者其他什么写错了,那么分析点集中在servlet上面,再往下看,这个HelloServlet实例化出错了,那么问题出在哪里呢?再玩下看,ClassNotFoundException,这个异常,emm,原来是没有找到class,为什么没有找到class呢?我明明些了这个class,是不是我的xml写错了?回去检查xml,发现写的很正确,没错。那么错出在哪?代码再次检查,都与案例相同,那么问题就很简单了,问题出在大环境上面了,可能是1)tomcat版本和JDK不适配;2)动态web工程设置错误;3)tomcat配置不正确;
1)查看tomcat版本以及相应的JDK,发现是相匹配的,遂排除。
2)教程中是直接就从idea里面选择了Java EE中的web,但是我这个idea里面没有,怎么办?百度一下看看如何设置动态web工程,查到了,在模块上右击,选择Add Framework Support,这里面有,添加上,好的,设置成功,虽然和教程上看上去有点不一样;先这样吧,如果有问题再从这里找。
3)重新配置tomcat,先把原来的路径删除,删除的时候看到,哦,原来的路径是有问题的,怎么直接配到bin目录了,而且目录里面还有空格(虽然空格好像没事,但是还是去掉的好),好的,重新配置完成,再添加部署web到里面,重看教程,哦,原来是选择artifact,而不是我之前选的external source,好的,这个可能也是出问题的原因,改掉改掉。
好的,修改完毕,试一下,run
bingo,好滴,成功!
虽然不知道问题具体出在那个地方,是为什么出来,但是我这个寻找bug并且debug的过程也是收益良多(花了好几个小时解决),至于到底是哪里出了问题,现在先不追求,等以后熟悉了再回过头来看这篇文章,以达到温故知新,知根知底的目的。
先这样了,886。