@[toc]
IDEA使用Tomcat运行Web项目及其常见报错
一、Project Structure
目的:让IDEA知道这是个Web项目
Modules
目的:加载Web相关的配置和资源
右键目标模块 -Add-WebWeb配置窗口
确认
web.xml路径是否正确,不正确需要手动修改web.xml即Deployment Descripters下的Path
确认
Web资源目录是否正确,不正确需要手动修改web资源目录即WEB-INF上级路径(JSP等放置的位置)应用程序一般默认为
web文件夹,但是我的项目为webapp文件夹,改为正确的webapp
Artifacts
即编译后的Java类,Web资源等的整合,用以测试、部署等工作
白话一点,就是说某个module要如何打包,例如war exploded、war、jar、ear等等这种打包形式
某个module有了 Artifacts 就可以部署到应用服务器中了
+-Add-Web Application: Exploded-From Modules...- 选择我们的项目or模块1
2
3
4
5
6区分:
(1)jar:Java ARchive,通常聚合Java类文件、相关数据和资源(文本、图片等)到一个文件,以便分发Java平台应用软件或库;
(2)war:Web application ARchive,一种JAR文件,其中包含用来分发的JSP、Java Servlet、Java类、XML文件、标签库、静态网页(HTML和相关文件),以及构成Web应用程序的其他资源;
(3)war exploded:展开,不压缩。直接把文件夹、jsp页面 、classes等移到Tomcat 部署文件夹里面
因此这种方式支持热部署,建议在开发的时候使用这种模式,便于修改了文件的效果立刻显现出来
热部署:对于Java应用程序来说,热部署就是在运行时更新Java类文件。
二、Tomcat配置
点击IDEA右上方执行的
Add Configuration...弹出的窗口中点击
+,出现的选项中往下滑,选择Tomcat Server-Local这步添加Tomcat配置
点击
Deployement页签,点击+,选择Artifact...这里IDEA会将刚才的
项目的artifact放入窗口中但也有可能存在其他的
artifact,选择我们需要的修改
Application context,可以只保留一个/IDEA会自动为我们生成项目根路径
如果其他配置没问题结果访问404很可能是因为这个没改
点击
Server页签,检查URL处是否与步骤4中设置的同步IDEA会自动同步
三、Tomcat运行
给我点那个绿色的Run!!!!
当你点击运行Tomcat时,IDEA在做什么
编译。
IDEA在保存后不会做编译,不像Eclipse的保存即编译,
因此在运行server前会做一次编译,
编译后class文件存放在指定的项目编译输出目录下;
根据artifact中的设定对目录结构进行创建;
拷贝web资源的根目录下的所有文件到artifact的目录下(见1.2.3);
拷贝编译输出目录下的classes目录到artifact下的WEB-INF下(见1.2.2);
拷贝lib目录下所需的jar包到artifact下的WEB_INF下;
运行server,运行成功后,如有需要,会自动打开浏览器访问指定url。
四、一些报错及解决
4.1、org.springframework..xxx不存在
4.1.1、情况一:pom.xml中的maven的dependency没加载好(红色version)
方法一:头铁再试一次
右击项目-Maven-ReimportIDEA将通过网络自动下载相关依赖,并存放在Maven的本地仓库中
方法二:换个version罢
如果还不行,可能的原因及解决:
原因一:你的maven配置了从aliyun镜像下载,而aliyun仓库中恰好没有对应version
原因二:版本号version暂时用不了(我也不知道是什么缘故),换个版本号就好了
解决:访问https://mvnrepository.com/(需要梯子)
搜索需要的artifact,复制其他version的dependency并粘贴到pom.xml中方法三:你是不是装过不止一个maven
检查
File-Settings-Build,Execution,Deployment-MavenMaven home directory选择你本次项目要用的mavenUser settings file的settings.xml里可能配置了从aliyun下载(自己权衡要不要改)方法四:手动下载jar包
如果上面的你都尝试过了,还是不行(哦,可怜的人儿):
你需要baidu.com搜索对应版本的jar包并下载
把jar包放到maven的本地repository文件夹中的对应位置(这个对应位置要点进一个个小文件夹)
注意删除最里面那个文件夹里以 .lastUpdated为后缀的文件(下载失败的),然后粘贴
刷新一下maven依赖
1 | 将Maven的刷新设置为自动,配置方法为: |
4.2.2、情况二:pom文件相关的依赖明明都下载好了,但运行还是找不到XXX相关的包
方法一:删除target文件夹下所有文件,重新编译运行。
方法二:File - Settings - Build,Execution,Deployment - Maven - Runner
勾选`Delegate IDE build/run actions to Maven`
选择自己安装的`JRE的路径`
4.2、java.io.FileNotFoundException: class path resource [spring/] cannot be resolve
描述:此异常是说找不到spring的配置文件。
原因:为了防止mybatis的mapper文件被过滤掉,在pom.xml的build节点下加入了如下代码
1 | <!--如果不加如下配置maven打包时不会将mapper文件打包进去--> |
解决:maven默认扫描src/main/java中的文件但并不理会src/main/resources中的xml文件,
因此,添加resource节点,使其扫描`src/main/resources`中的xml文件
1 | <!--如果不加如下配置maven打包时不会将mapper文件打包进去--> |
4.3、maven依赖的多个版本依赖冲突
描述:当出现下面问题异常的时候,如果clean jar包之后还是无法成功启动项目,可以考虑是这个问题
1 | 1、NoDefClassException |
查看:在界面右侧可找到Maven,点开,小图标里找到Show Dependencies,
点击后即可查看当前`maven模块的依赖结构图`,<u>红色的线</u>即为<u>依赖冲突</u>。
解决:
File-Settings-Plugins- 搜索maven helper-install- 打开
pom.xml,在编辑器下方 控制台上方,点击text旁边的Dependency Analyzer - 左侧为
冲突的jar包,挨个点开,把右侧红色的挨个右击exclude
五、参考博客
- IDEA使用Tomcat运行web项目教程:http://t.csdn.cn/44qjF
- idea运行项目 程序包org.springframework..xxx不存在的解决办法:http://t.csdn.cn/kzfyg
- 解决idea打开的项目中maven依赖下载失败问题:http://t.csdn.cn/6nNLs
- 如何将下载到本地的JAR包手动添加到Maven仓库:http://t.csdn.cn/82XIn
- war和war exploded的区别:http://t.csdn.cn/quYCO
- IDEA项目运行项目报404错误——org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。:http://t.csdn.cn/CY4WI
- IDEA部署项目到tomcat运行成功但是页面404的两种原因:http://t.csdn.cn/E3IBU
- java.io.FileNotFoundException: class path resource [spring/] cannot be resolve 《异常信息》:http://t.csdn.cn/5JDz8
- idea如何解决jar包冲突:http://t.csdn.cn/qyKTp