使用IntelliJ IDEA运行Tomcat报ClassNotFoundException
最近在学习JavaWeb,使用的是IntelliJ IDEA。
为了真正从零开始搭建JavaWeb项目,使用IntelliJ IDEA新建空的JavaWeb项目,一步一步搭建起来的。具体可参考:
IntelliJ IDEA 创建Web项目
搭建了起来之后,开始愉快JavaWeb之旅!
掌握了基本的JavaWeb知识之后,开始从零搭建一个练手的注册登录项目!结果,Tomcat一直报java.lang.ClassNotFoundException,报告说写 RegisterServlet(一个Servlet类)找不到?
- 把web.xml看了一遍,配置没问题。
- 把jsp文件看了一遍,form表达提交的action配置也没问题
- 把项目引用的jar包也看了一遍,导入配置没问题,也没有jar包冲突问题
- 先把tomcat中的所有项目移除,然后清除tomcat中的所有东西 ,最好也一并清除tomcat的Catalina文件夹,把它的记录都删的干干净净然后再重新编译看看;
- 删除eclipse(或IDEA)中的tomcat,重新再导入一遍;
以上都弄过之后,还是不能解决!!!
翻出那些直接使用IntelliJ IDEA自动构建的JavaWeb项目,能运行啊!
这样对比来看,这个项目是完全的空的JavaWeb项目,有可能是中途配置的时候配置错误了!
于是重新寻找配置! lib包配置OK,web.xml配置也没问题!跟Tomcat配置有关的一个配置Artifacts,如图:
如上图,标红框的地方有两个文件夹(这里我已经删除重新生成了一个),这个文件关乎到Tomcat部署访问项目的路径问题。有两个文件夹是有问题的,所以把两个都移除掉,重新生成一个。如这个目录下把两个文件夹都删除掉!
然后重新配置Artifacts,然后重新配置Tomcat,使用Tomcat部署运行项目,OK!
猜测这个Artifacts的配置,这个关乎到部署访问项目路径,由Tomcat识别路径,如果配置错误,导致Tomcat识别。而配置Tomcat的时候,IntelliJ IDEA就是这样关联起来的,如下图:
可以看出IntelliJ IDEA配置Artifacts和配置Tomcat项目路径时,“day02_homework_Web_exploded”这一项目名字出现了多次。所以个人认为,这两个地方的配置是要一致的,不然就会报ClassNotFoundException或者其他资源找不到的错误!