前言
我主要是进行java的springboot项目和vue项目的开发,但是架不住在这些框架兴起之前,公司内部已经是有其他的老的框架,我需要在这些老的框架进行修改和调整代码。原本我是使用的eclipse软件进行部署,也比较简单;
但是我遇到了一个怎么也解决不了的问题,没有报任何错误,但是tomcat怎么也启动不起来。总是报
encountered problem
这样的提示问题。
我不部署任何项目,直接启动本机的tomcat,是能够直接跳转访问到tomcat的管理界面,但是在eclipse一直启动不起来;我搜索的几乎所有的结果,都是说它eclipse配置tomcat会进行重定向,需要把eclipse配置的tomcat的server.xml里的
<Context></Context>
标签的内容注释掉或删除掉,才能够不会报错。
但是这边又有一个问题,删除之后确实能够启动tomcat了,我导入的javaweb项目是通过访问index.jsp进行访问项目,发现该配置的都配置了,硬是没有编译成功,没有把主入口编译出来,无法访问到我需要访问的项目。
ps:我有在第一次配置成功,可以访问,但是项目出现问题;第二次配置的时候就出现上面的情况
折磨了我很久,于是我打算使用idea进行配置javaweb项目;也折腾了很久,为了以后方便,把我这次使用idea配置javaweb的过程记录下来。
准备工作
IDEA
安装IDEA,这个是就不需要多说了,不过虽然版本一般不会影响配置javaweb,但是防止版本不一致部分操作可能不同,还是发出我使用的IDEA版本
我的IDEA版本为:
IDEA 2021.1.3
tomcat
首先,你本机一定需要下载一个tomcat,版本无所谓都是可以的。然后记住你下载tomcat存放到本机的位置。如我的在D盘
D:\software\tomcat\apache-tomcat-9.0.54
jdk
同样,你的本机需要下载安装jdk,这边有一点很重要,
配置javaweb,里面的jdk版本一定要跟着javaweb项目来。
我的jdk路径同样也是在D盘
D:\software\jdk
javaweb结构
以下贴出我导入前的javaweb项目结构
以我的项目名称:HRMS
然后进行导入到idea
点击
File--->Open
找到你的本地的javaweb项目,点击
OK
即可
然后它提示我是否打开新窗口打开项目,选择是
New Window
导入后的项目结构
这些就是我项目中的结构了,但是我们很多文件都不需要看,
配置文件你最主要的是需要看
WebContent--->WEB-INF
文件
配置文件你最主要的是需要看
WebContent--->WEB-INF
文件
配置文件你最主要的是需要看
WebContent--->WEB-INF
文件
重要的事情说三遍!!!
此外,还有一个很重要的事情,万一,你的IDEA没有识别出你的javaweb项目的src是java代码
需要标注
src
文件夹为资源文件(即src文件夹不是蓝色)
对src文件夹鼠标右键----》Mark Directory as ----》 Rources Root
配置JavaWeb项目
接下来是重头
project Structure…
点击
File ---> project Structure...
打开项目配置界面
界面为
project Structure… --> Project
里面的Project
界面需要配置两个,一个是
Project SDK
,一个是
Project language level
SDK即jdk, language level即jdk版本
导入本机配置好的jdk(这里不额外教学idea配置jdk,详情百度,如果没有的话)
选择对应javaweb项目的jdk版本
一般大部分javaweb项目版本都是jdk1.8,和我的一样也是OK的
我的为:
即
SDK
1.8 version
language level
8 -Lambdas,type annotations etc.
另外
ps:一般情况,Project complier output这里都需要进行配置打包生成位置
project Structure… --> Libraries
可以看到我这边并没有直接配置Modules,而是先Libraries
这个是java代码需要的依赖包,如果你有写过Maven项目或者说是Springboot项目,和在pom.xml引入依赖的原理是一样的。
初始为上图,什么内容都没有,为空;
然后我们点击加号
+
选择java引入
在我的项目中,只有在
webContent--->WEB-INF ---> lib
文件夹下才有对应的jar包,所以我只需要引入这个地方的jar包即可。
如果你的项目中有别的文件夹也有jar包,需要一并引入
点击OK,然后会提示
Library 'lib' will be added to the selected modules
意思是是否将引入的这个包引入到modules模块,也就是我跳过的地方
引入modules,也意味着,它是会引入到整个项目的配置,
我们选中,然后点击OK即可
project Structure… --> Modules
这个时候我们再回过头看看modules界面
抛开刚刚引入的
lib
剩下的为初始界面
同样,我们来看看
Modules--->Sources
以及
Modules--->Paths
Sources里代表的是我们整个项目的资源情况
Paths 进行配置导包的操作,一般情况下,javaweb导包是会生成war,tomcat进行启动。
这里Modules我们什么都不需要操作,只给大家说明作用。
project Structure… --> Facets
Facets
初始界面为:
初始是空白的状态,什么都没有。它的作用就一个:
让IDEA知道这个项目是什么项目,知道需要怎么去运行这个项目,配置框架
我们这个项目是javaweb项目,自然而然需要配置为web框架
点击加号
+
,选择
web
同样也会提示一个提示
Web facet will be added to selected module
它的意思是是否将web框架添加到选择的module模块
同样我们,选中项目module,选择OK
接下来一步非常重要
接下来一步非常重要
接下来一步非常重要
假如你现在点击
Apply
应用配置的话,你会发现,项目会多出一个文件夹
web
但是只到这里的话,该操作
默认给你创建一个新的web项目,
而不是将你导入的javaweb项目标记为web项目,
所以我们需要更改配置。
将
Facets ---> Type
选中,点击画笔,修改
将该配置映射到我们导入的javaweb项目的web.xml
即选择自己导入项目的
WebContent -- > WEB-INF ---> web.xml
文件
点击OK
继续点击OK
把
Facets --> Web Resource Directory
选中,点击画笔,进行修改
将其选择自己项目中的
WebContent
文件夹,点击OK
继续点击OK
点击Apply应用即可
这里,它提示
'Web' Facet resources are not included in any artifacts
也就是进入到我们的下一个配置
Artifacts
project Structure… --> Artifacts
打开Artifacts
初始为
也是空白,我们同样点击加号
+
然后选择
Web Application:Exploded --> From Modules
同样弹窗提示
提示
select modules will be included in the created artifact with all dependencies
意思是
是否将选择的模块包含在创建的组件(artifact)中,并包含所有依赖项
我们也是选中module点击OK
以上我们的javaweb项目的配置都ok了,
不要忘记点击Apply进行应用配置!!!
不要忘记点击Apply进行应用配置!!!
不要忘记点击Apply进行应用配置!!!
还有一个地方很重要,
在Artifact的进行配置需要打成
war
包的各种
那么你首先需要在该界面的
Type
是
Web Application Exploded
下进行配置排查完错误之后
把这里的
Type
从
Web Application Exploded
改成
Web Application Archive
配置tomcat
接下来我们配置最后一步,配置tomcat
点击
Add Configuration
添加配置
出现界面如下
然后我们点击加号
+
找到tomcat,
选择local 本机
然后界面为:
一般情况下,你如果没有配置过tomcat
Application server
一栏是空的,我们需要点击右边的
Configure...
进行找到我们下载到本地的tomcat
找到tomcat目录
以下截图为配置好之后的tomcat
这里之后一共需要注意四点
Application server:
配置本机tomcat
URL:
运行项目的主url
HTTP port:
运行项目的端口
Warning:No artifacts marked for deployment
:提示需要将运行项目的artifact进行配置
上述我们已经配置完成了,可以点右边的
Fix
自动添加
也可以点Deployment手动添加
最后同样也不要忘记
Apply
应用
大部分项目到这里已经可以直接运行了,点击三角运行即可
打包为War包
如果你需要将javaweb项目打包,那么你一定需要在配置界面
在Artifact的进行配置
把这里的
Type
从
Web Application Exploded
改成
Web Application Archive
为了防止缓存等问题,在打包前最好清除一下缓存
点击
Build -- > Build Artifact
然后点击
Clean
清除完成后,点击
Build
最后在配置的输出路径能够找到自己的war包
以上大部分的javaweb项目都可以执行成功,如果不行,请确认是否排查完错误,并且按照我的步骤一步步走下来。
当然,我的项目还不行,出来了各种问题,于是下面我来讲一下我的解决过程
遇到问题处理
我遇到的问题不代表全部解决方案,毕竟代码这种东西总会出来各种稀奇古怪的问题。有问题不是我这边总结发的可以评论出来,如果我知道会更新文章出来
缺失jar依赖
这种情况下,就需要引入对应的jar包
如果是常用的jar我推荐一个maven库,直接从里面下载jar进行引入,如果我给的maven库没有对应的jar包下载,那么你需要另外找库进行下载
mvnrepository库
除了上述常用的jar包出现之外,我还遇到如下问题
java: 程序包javax.servlet不存在
这个我通过查找百度,实际上是tomcat的依赖jar包,只需要引入本地的tomcat的servlet-api.jar包即可
同样打开
Project Structure
配置,打开Lbraries界面
点击右边已经引入的加号,继续引入
找到tomcat的依赖包
servlet-api.jar
,
注意我的本地的对应依赖包路径为
D:\software\tomcat\apache-tomcat-9.0.54\lib\servlet-api.jar
同样不要忘记
Apply
应用
此外,我还遇到一个
该jar包同样通过百度查找也是tomcat的依赖,需要引入tomcat的
jasper.jar
步骤和上面相同
未找到jar对应方法
另外,如果遇到引入的jar没有问题,但是对应的方法爆红,那么很大可能是由于jar版本不兼容,
这种情况,我通过查找百度得知我遇到的那个jar,高于多少多少版本的对应爆红的方法被删掉了,然后我一看实际引入的对应jar,确实高出了不少版本,然后我把对应的依赖换成低版本就不报错了。
对应如何替换jar,和配置的Libraries界面操作一样!
项目实际启动结果
以下截图为我项目实际配置好之后启动的截图,(只发出一个入口界面)
结语
以上为我使用IDEA 导入别人的javaweb项目进行部署
也走了很多弯路,发出来除了作记录,也帮助需要的人进行配置。
再后面如果更新,很大是会在遇到的配置的问题上进行更新,以上。
版权归原作者 相与还 所有, 如有侵权,请联系我们删除。