IDEA 导入别人的javaweb项目进行部署

前言

我主要是进行java的springboot项目和vue项目的开发,但是架不住在这些框架兴起之前,公司内部已经是有其他的老的框架,我需要在这些老的框架进行修改和调整代码。原本我是使用的eclipse软件进行部署,也比较简单;

但是我遇到了一个怎么也解决不了的问题,没有报任何错误,但是tomcat怎么也启动不起来。总是报encountered problem这样的提示问题。

我不部署任何项目,直接启动本机的tomcat,是能够直接跳转访问到tomcat的管理界面,但是在eclipse一直启动不起来;我搜索的几乎所有的结果,都是说它eclipse配置tomcat会进行重定向,需要把eclipse配置的tomcat的server.xml里的标签的内容注释掉或删除掉,才能够不会报错。

但是这边又有一个问题,删除之后确实能够启动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

IDEA 导入别人的javaweb项目进行部署_第1张图片
IDEA 导入别人的javaweb项目进行部署_第2张图片

jdk

同样,你的本机需要下载安装jdk,这边有一点很重要,
配置javaweb,里面的jdk版本一定要跟着javaweb项目来。
我的jdk路径同样也是在D盘

D:\software\jdk

IDEA 导入别人的javaweb项目进行部署_第3张图片

javaweb结构

以下贴出我导入前的javaweb项目结构
以我的项目名称:HRMS
IDEA 导入别人的javaweb项目进行部署_第4张图片
然后进行导入到idea
点击 File--->Open
IDEA 导入别人的javaweb项目进行部署_第5张图片
找到你的本地的javaweb项目,点击OK即可
IDEA 导入别人的javaweb项目进行部署_第6张图片
然后它提示我是否打开新窗口打开项目,选择是New Window
IDEA 导入别人的javaweb项目进行部署_第7张图片
导入后的项目结构
IDEA 导入别人的javaweb项目进行部署_第8张图片
IDEA 导入别人的javaweb项目进行部署_第9张图片
IDEA 导入别人的javaweb项目进行部署_第10张图片
这些就是我项目中的结构了,但是我们很多文件都不需要看,
配置文件你最主要的是需要看WebContent--->WEB-INF文件
配置文件你最主要的是需要看WebContent--->WEB-INF文件
配置文件你最主要的是需要看WebContent--->WEB-INF文件
重要的事情说三遍!!!

此外,还有一个很重要的事情,万一,你的IDEA没有识别出你的javaweb项目的src是java代码
需要标注src文件夹为资源文件(即src文件夹不是蓝色)
对src文件夹鼠标右键----》Mark Directory as ----》 Rources Root
IDEA 导入别人的javaweb项目进行部署_第11张图片

配置JavaWeb项目

接下来是重头

project Structure…

点击File ---> project Structure...
打开项目配置界面
界面为
IDEA 导入别人的javaweb项目进行部署_第12张图片

project Structure… --> Project

里面的Project界面需要配置两个,一个是Project SDK,一个是Project language level
SDK即jdk, language level即jdk版本
导入本机配置好的jdk(这里不额外教学idea配置jdk,详情百度,如果没有的话)
选择对应javaweb项目的jdk版本
一般大部分javaweb项目版本都是jdk1.8,和我的一样也是OK的

我的为:
IDEA 导入别人的javaweb项目进行部署_第13张图片

SDK 1.8 version

language level 8 -Lambdas,type annotations etc.

另外
ps:一般情况,Project complier output这里都需要进行配置打包生成位置

project Structure… --> Libraries

可以看到我这边并没有直接配置Modules,而是先Libraries
IDEA 导入别人的javaweb项目进行部署_第14张图片

这个是java代码需要的依赖包,如果你有写过Maven项目或者说是Springboot项目,和在pom.xml引入依赖的原理是一样的。
初始为上图,什么内容都没有,为空;
然后我们点击加号+
选择java引入
IDEA 导入别人的javaweb项目进行部署_第15张图片
在我的项目中,只有在webContent--->WEB-INF ---> lib文件夹下才有对应的jar包,所以我只需要引入这个地方的jar包即可。
如果你的项目中有别的文件夹也有jar包,需要一并引入
IDEA 导入别人的javaweb项目进行部署_第16张图片
点击OK,然后会提示
IDEA 导入别人的javaweb项目进行部署_第17张图片
Library 'lib' will be added to the selected modules
意思是是否将引入的这个包引入到modules模块,也就是我跳过的地方
引入modules,也意味着,它是会引入到整个项目的配置,
我们选中,然后点击OK即可
IDEA 导入别人的javaweb项目进行部署_第18张图片

project Structure… --> Modules

这个时候我们再回过头看看modules界面
抛开刚刚引入的lib
剩下的为初始界面
IDEA 导入别人的javaweb项目进行部署_第19张图片
同样,我们来看看Modules--->Sources
IDEA 导入别人的javaweb项目进行部署_第20张图片
以及Modules--->Paths
IDEA 导入别人的javaweb项目进行部署_第21张图片
Sources里代表的是我们整个项目的资源情况
Paths 进行配置导包的操作,一般情况下,javaweb导包是会生成war,tomcat进行启动。
这里Modules我们什么都不需要操作,只给大家说明作用。

project Structure… --> Facets

Facets
初始界面为:
IDEA 导入别人的javaweb项目进行部署_第22张图片
初始是空白的状态,什么都没有。它的作用就一个:
让IDEA知道这个项目是什么项目,知道需要怎么去运行这个项目,配置框架
我们这个项目是javaweb项目,自然而然需要配置为web框架
点击加号+,选择web
IDEA 导入别人的javaweb项目进行部署_第23张图片
同样也会提示一个提示
IDEA 导入别人的javaweb项目进行部署_第24张图片
Web facet will be added to selected module

它的意思是是否将web框架添加到选择的module模块
同样我们,选中项目module,选择OK

接下来一步非常重要
接下来一步非常重要
接下来一步非常重要
IDEA 导入别人的javaweb项目进行部署_第25张图片
假如你现在点击Apply应用配置的话,你会发现,项目会多出一个文件夹web
IDEA 导入别人的javaweb项目进行部署_第26张图片
但是只到这里的话,该操作
默认给你创建一个新的web项目,
而不是将你导入的javaweb项目标记为web项目,
所以我们需要更改配置。

Facets ---> Type
选中,点击画笔,修改
IDEA 导入别人的javaweb项目进行部署_第27张图片
将该配置映射到我们导入的javaweb项目的web.xml
IDEA 导入别人的javaweb项目进行部署_第28张图片
即选择自己导入项目的WebContent -- > WEB-INF ---> web.xml文件
点击OK
IDEA 导入别人的javaweb项目进行部署_第29张图片
继续点击OK

Facets --> Web Resource Directory
选中,点击画笔,进行修改
IDEA 导入别人的javaweb项目进行部署_第30张图片
将其选择自己项目中的WebContent 文件夹,点击OK
IDEA 导入别人的javaweb项目进行部署_第31张图片
继续点击OK
IDEA 导入别人的javaweb项目进行部署_第32张图片
点击Apply应用即可

这里,它提示
'Web' Facet resources are not included in any artifacts
也就是进入到我们的下一个配置
Artifacts

project Structure… --> Artifacts

打开Artifacts
初始为
IDEA 导入别人的javaweb项目进行部署_第33张图片
也是空白,我们同样点击加号+
然后选择Web Application:Exploded --> From Modules
IDEA 导入别人的javaweb项目进行部署_第34张图片
同样弹窗提示
IDEA 导入别人的javaweb项目进行部署_第35张图片
提示
select modules will be included in the created artifact with all dependencies

意思是是否将选择的模块包含在创建的组件(artifact)中,并包含所有依赖项

我们也是选中module点击OK
IDEA 导入别人的javaweb项目进行部署_第36张图片

以上我们的javaweb项目的配置都ok了,
不要忘记点击Apply进行应用配置!!!
不要忘记点击Apply进行应用配置!!!
不要忘记点击Apply进行应用配置!!!

还有一个地方很重要,
在Artifact的进行配置需要打成war包的各种
那么你首先需要在该界面的TypeWeb Application Exploded下进行配置排查完错误之后
把这里的TypeWeb Application Exploded改成Web Application Archive

配置tomcat

接下来我们配置最后一步,配置tomcat
IDEA 导入别人的javaweb项目进行部署_第37张图片
点击Add Configuration添加配置
出现界面如下
IDEA 导入别人的javaweb项目进行部署_第38张图片
然后我们点击加号+
找到tomcat,
选择local 本机
IDEA 导入别人的javaweb项目进行部署_第39张图片
然后界面为:
IDEA 导入别人的javaweb项目进行部署_第40张图片
一般情况下,你如果没有配置过tomcat
Application server一栏是空的,我们需要点击右边的Configure...进行找到我们下载到本地的tomcat
IDEA 导入别人的javaweb项目进行部署_第41张图片
找到tomcat目录
IDEA 导入别人的javaweb项目进行部署_第42张图片
以下截图为配置好之后的tomcat
IDEA 导入别人的javaweb项目进行部署_第43张图片
这里之后一共需要注意四点
IDEA 导入别人的javaweb项目进行部署_第44张图片
Application server: 配置本机tomcat
URL: 运行项目的主url
HTTP port:运行项目的端口
Warning:No artifacts marked for deployment:提示需要将运行项目的artifact进行配置
上述我们已经配置完成了,可以点右边的Fix自动添加
也可以点Deployment手动添加
IDEA 导入别人的javaweb项目进行部署_第45张图片
IDEA 导入别人的javaweb项目进行部署_第46张图片
最后同样也不要忘记Apply应用

大部分项目到这里已经可以直接运行了,点击三角运行即可
IDEA 导入别人的javaweb项目进行部署_第47张图片

打包为War包

如果你需要将javaweb项目打包,那么你一定需要在配置界面
在Artifact的进行配置
把这里的TypeWeb Application Exploded改成Web Application Archive
IDEA 导入别人的javaweb项目进行部署_第48张图片
为了防止缓存等问题,在打包前最好清除一下缓存
点击Build -- > Build Artifact
IDEA 导入别人的javaweb项目进行部署_第49张图片
然后点击Clean
IDEA 导入别人的javaweb项目进行部署_第50张图片

清除完成后,点击Build
IDEA 导入别人的javaweb项目进行部署_第51张图片
最后在配置的输出路径能够找到自己的war包
IDEA 导入别人的javaweb项目进行部署_第52张图片

以上大部分的javaweb项目都可以执行成功,如果不行,请确认是否排查完错误,并且按照我的步骤一步步走下来。

当然,我的项目还不行,出来了各种问题,于是下面我来讲一下我的解决过程

遇到问题处理

我遇到的问题不代表全部解决方案,毕竟代码这种东西总会出来各种稀奇古怪的问题。有问题不是我这边总结发的可以评论出来,如果我知道会更新文章出来

缺失jar依赖

这种情况下,就需要引入对应的jar包
如果是常用的jar我推荐一个maven库,直接从里面下载jar进行引入,如果我给的maven库没有对应的jar包下载,那么你需要另外找库进行下载


mvnrepository库


除了上述常用的jar包出现之外,我还遇到如下问题
IDEA 导入别人的javaweb项目进行部署_第53张图片
java: 程序包javax.servlet不存在
这个我通过查找百度,实际上是tomcat的依赖jar包,只需要引入本地的tomcat的servlet-api.jar包即可

同样打开Project Structure配置,打开Lbraries界面
点击右边已经引入的加号,继续引入
IDEA 导入别人的javaweb项目进行部署_第54张图片
找到tomcat的依赖包servlet-api.jar
注意我的本地的对应依赖包路径为

D:\software\tomcat\apache-tomcat-9.0.54\lib\servlet-api.jar

IDEA 导入别人的javaweb项目进行部署_第55张图片
同样不要忘记Apply应用

此外,我还遇到一个
IDEA 导入别人的javaweb项目进行部署_第56张图片
该jar包同样通过百度查找也是tomcat的依赖,需要引入tomcat的jasper.jar
步骤和上面相同
IDEA 导入别人的javaweb项目进行部署_第57张图片

未找到jar对应方法

另外,如果遇到引入的jar没有问题,但是对应的方法爆红,那么很大可能是由于jar版本不兼容,
这种情况,我通过查找百度得知我遇到的那个jar,高于多少多少版本的对应爆红的方法被删掉了,然后我一看实际引入的对应jar,确实高出了不少版本,然后我把对应的依赖换成低版本就不报错了。

对应如何替换jar,和配置的Libraries界面操作一样!

项目实际启动结果

以下截图为我项目实际配置好之后启动的截图,(只发出一个入口界面)
IDEA 导入别人的javaweb项目进行部署_第58张图片

结语

以上为我使用IDEA 导入别人的javaweb项目进行部署
也走了很多弯路,发出来除了作记录,也帮助需要的人进行配置。
再后面如果更新,很大是会在遇到的配置的问题上进行更新,以上。

你可能感兴趣的:(java,intellij-idea,tomcat,java)