IDEA 如何導(dǎo)入別人的javaweb項(xiàng)目進(jìn)行部署
前言
我主要是進(jìn)行java的springboot項(xiàng)目和vue項(xiàng)目的開發(fā),但是架不住在這些框架興起之前,公司內(nèi)部已經(jīng)是有其他的老的框架,我需要在這些老的框架進(jìn)行修改和調(diào)整代碼。原本我是使用的eclipse軟件進(jìn)行部署,也比較簡(jiǎn)單;
但是我遇到了一個(gè)怎么也解決不了的問題,沒有報(bào)任何錯(cuò)誤,但是tomcat怎么也啟動(dòng)不起來(lái)。總是報(bào)encountered problem這樣的提示問題。
我不部署任何項(xiàng)目,直接啟動(dòng)本機(jī)的tomcat,是能夠直接跳轉(zhuǎn)訪問到tomcat的管理界面,但是在eclipse一直啟動(dòng)不起來(lái);我搜索的幾乎所有的結(jié)果,都是說(shuō)它eclipse配置tomcat會(huì)進(jìn)行重定向,需要把eclipse配置的tomcat的server.xml里的<Context></Context>標(biāo)簽的內(nèi)容注釋掉或刪除掉,才能夠不會(huì)報(bào)錯(cuò)。
但是這邊又有一個(gè)問題,刪除之后確實(shí)能夠啟動(dòng)tomcat了,我導(dǎo)入的javaweb項(xiàng)目是通過(guò)訪問index.jsp進(jìn)行訪問項(xiàng)目,發(fā)現(xiàn)該配置的都配置了,硬是沒有編譯成功,沒有把主入口編譯出來(lái),無(wú)法訪問到我需要訪問的項(xiàng)目。
ps:我有在第一次配置成功,可以訪問,但是項(xiàng)目出現(xiàn)問題;第二次配置的時(shí)候就出現(xiàn)上面的情況
折磨了我很久,于是我打算使用idea進(jìn)行配置javaweb項(xiàng)目;也折騰了很久,為了以后方便,把我這次使用idea配置javaweb的過(guò)程記錄下來(lái)。
準(zhǔn)備工作
IDEA
安裝IDEA,這個(gè)是就不需要多說(shuō)了,不過(guò)雖然版本一般不會(huì)影響配置javaweb,但是防止版本不一致部分操作可能不同,還是發(fā)出我使用的IDEA版本
我的IDEA版本為: IDEA 2021.1.3
tomcat
首先,你本機(jī)一定需要下載一個(gè)tomcat,版本無(wú)所謂都是可以的。然后記住你下載tomcat存放到本機(jī)的位置。如我的在D盤
D:\software\tomcat\apache-tomcat-9.0.54


jdk
同樣,你的本機(jī)需要下載安裝jdk,這邊有一點(diǎn)很重要,配置javaweb,里面的jdk版本一定要跟著javaweb項(xiàng)目來(lái)。
我的jdk路徑同樣也是在D盤
D:\software\jdk

javaweb結(jié)構(gòu)
以下貼出我導(dǎo)入前的javaweb項(xiàng)目結(jié)構(gòu)
以我的項(xiàng)目名稱:HRMS

然后進(jìn)行導(dǎo)入到idea
點(diǎn)擊 File--->Open

找到你的本地的javaweb項(xiàng)目,點(diǎn)擊OK即可

然后它提示我是否打開新窗口打開項(xiàng)目,選擇是New Window

導(dǎo)入后的項(xiàng)目結(jié)構(gòu)



這些就是我項(xiàng)目中的結(jié)構(gòu)了,但是我們很多文件都不需要看,
配置文件你最主要的是需要看WebContent--->WEB-INF文件
配置文件你最主要的是需要看WebContent--->WEB-INF文件
配置文件你最主要的是需要看WebContent--->WEB-INF文件
重要的事情說(shuō)三遍!!!
此外,還有一個(gè)很重要的事情,萬(wàn)一,你的IDEA沒有識(shí)別出你的javaweb項(xiàng)目的src是java代碼
需要標(biāo)注src文件夾為資源文件(即src文件夾不是藍(lán)色)對(duì)src文件夾鼠標(biāo)右鍵----》Mark Directory as ----》 Rources Root

配置JavaWeb項(xiàng)目
接下來(lái)是重頭
project Structure…
點(diǎn)擊File ---> project Structure...
打開項(xiàng)目配置界面
界面為

project Structure… --> Project
里面的Project界面需要配置兩個(gè),一個(gè)是Project SDK,一個(gè)是Project language level
SDK即jdk, language level即jdk版本
導(dǎo)入本機(jī)配置好的jdk(這里不額外教學(xué)idea配置jdk,詳情百度,如果沒有的話)
選擇對(duì)應(yīng)javaweb項(xiàng)目的jdk版本
一般大部分javaweb項(xiàng)目版本都是jdk1.8,和我的一樣也是OK的
我的為:

即SDK 1.8 version
language level 8 -Lambdas,type annotations etc.
另外ps:一般情況,Project complier output這里都需要進(jìn)行配置打包生成位置
project Structure… --> Libraries
可以看到我這邊并沒有直接配置Modules,而是先Libraries

這個(gè)是java代碼需要的依賴包,如果你有寫過(guò)Maven項(xiàng)目或者說(shuō)是Springboot項(xiàng)目,和在pom.xml引入依賴的原理是一樣的。
初始為上圖,什么內(nèi)容都沒有,為空;
然后我們點(diǎn)擊加號(hào)+
選擇java引入

在我的項(xiàng)目中,只有在webContent--->WEB-INF ---> lib文件夾下才有對(duì)應(yīng)的jar包,所以我只需要引入這個(gè)地方的jar包即可。如果你的項(xiàng)目中有別的文件夾也有jar包,需要一并引入

點(diǎn)擊OK,然后會(huì)提示

Library 'lib' will be added to the selected modules
意思是是否將引入的這個(gè)包引入到modules模塊,也就是我跳過(guò)的地方
引入modules,也意味著,它是會(huì)引入到整個(gè)項(xiàng)目的配置,
我們選中,然后點(diǎn)擊OK即可

project Structure… --> Modules
這個(gè)時(shí)候我們?cè)倩剡^(guò)頭看看modules界面
拋開剛剛引入的lib
剩下的為初始界面

同樣,我們來(lái)看看Modules--->Sources

以及Modules--->Paths

Sources里代表的是我們整個(gè)項(xiàng)目的資源情況
Paths 進(jìn)行配置導(dǎo)包的操作,一般情況下,javaweb導(dǎo)包是會(huì)生成war,tomcat進(jìn)行啟動(dòng)。
這里Modules我們什么都不需要操作,只給大家說(shuō)明作用。
project Structure… --> Facets
Facets
初始界面為:

初始是空白的狀態(tài),什么都沒有。它的作用就一個(gè):讓IDEA知道這個(gè)項(xiàng)目是什么項(xiàng)目,知道需要怎么去運(yùn)行這個(gè)項(xiàng)目,配置框架
我們這個(gè)項(xiàng)目是javaweb項(xiàng)目,自然而然需要配置為web框架
點(diǎn)擊加號(hào)+,選擇web

同樣也會(huì)提示一個(gè)提示

Web facet will be added to selected module
它的意思是是否將web框架添加到選擇的module模塊
同樣我們,選中項(xiàng)目module,選擇OK
接下來(lái)一步非常重要接下來(lái)一步非常重要接下來(lái)一步非常重要

假如你現(xiàn)在點(diǎn)擊Apply應(yīng)用配置的話,你會(huì)發(fā)現(xiàn),項(xiàng)目會(huì)多出一個(gè)文件夾web

但是只到這里的話,該操作默認(rèn)給你創(chuàng)建一個(gè)新的web項(xiàng)目,而不是將你導(dǎo)入的javaweb項(xiàng)目標(biāo)記為web項(xiàng)目,所以我們需要更改配置。
將Facets ---> Type
選中,點(diǎn)擊畫筆,修改

將該配置映射到我們導(dǎo)入的javaweb項(xiàng)目的web.xml

即選擇自己導(dǎo)入項(xiàng)目的WebContent -- > WEB-INF ---> web.xml文件
點(diǎn)擊OK

繼續(xù)點(diǎn)擊OK
把Facets --> Web Resource Directory
選中,點(diǎn)擊畫筆,進(jìn)行修改

將其選擇自己項(xiàng)目中的WebContent 文件夾,點(diǎn)擊OK

繼續(xù)點(diǎn)擊OK

點(diǎn)擊Apply應(yīng)用即可
這里,它提示'Web' Facet resources are not included in any artifacts
也就是進(jìn)入到我們的下一個(gè)配置Artifacts
project Structure… --> Artifacts
打開Artifacts
初始為

也是空白,我們同樣點(diǎn)擊加號(hào)+
然后選擇Web Application:Exploded --> From Modules

同樣彈窗提示

提示select modules will be included in the created artifact with all dependencies
意思是是否將選擇的模塊包含在創(chuàng)建的組件(artifact)中,并包含所有依賴項(xiàng)
我們也是選中module點(diǎn)擊OK

以上我們的javaweb項(xiàng)目的配置都o(jì)k了,不要忘記點(diǎn)擊Apply進(jìn)行應(yīng)用配置!!!不要忘記點(diǎn)擊Apply進(jìn)行應(yīng)用配置!!!不要忘記點(diǎn)擊Apply進(jìn)行應(yīng)用配置!!!
還有一個(gè)地方很重要,
在Artifact的進(jìn)行配置需要打成war包的各種
那么你首先需要在該界面的Type是Web Application Exploded下進(jìn)行配置排查完錯(cuò)誤之后
把這里的Type從Web Application Exploded改成Web Application Archive
配置tomcat
接下來(lái)我們配置最后一步,配置tomcat

點(diǎn)擊Add Configuration添加配置
出現(xiàn)界面如下

然后我們點(diǎn)擊加號(hào)+
找到tomcat,
選擇local 本機(jī)

然后界面為:

一般情況下,你如果沒有配置過(guò)tomcatApplication server一欄是空的,我們需要點(diǎn)擊右邊的Configure...進(jìn)行找到我們下載到本地的tomcat

找到tomcat目錄

以下截圖為配置好之后的tomcat

這里之后一共需要注意四點(diǎn)

Application server: 配置本機(jī)tomcatURL: 運(yùn)行項(xiàng)目的主urlHTTP port:運(yùn)行項(xiàng)目的端口Warning:No artifacts marked for deployment:提示需要將運(yùn)行項(xiàng)目的artifact進(jìn)行配置
上述我們已經(jīng)配置完成了,可以點(diǎn)右邊的Fix自動(dòng)添加
也可以點(diǎn)Deployment手動(dòng)添加


最后同樣也不要忘記Apply應(yīng)用
大部分項(xiàng)目到這里已經(jīng)可以直接運(yùn)行了,點(diǎn)擊三角運(yùn)行即可

打包為War包
如果你需要將javaweb項(xiàng)目打包,那么你一定需要在配置界面
在Artifact的進(jìn)行配置
把這里的Type從Web Application Exploded改成Web Application Archive

為了防止緩存等問題,在打包前最好清除一下緩存
點(diǎn)擊Build -- > Build Artifact

然后點(diǎn)擊Clean

清除完成后,點(diǎn)擊Build

最后在配置的輸出路徑能夠找到自己的war包

以上大部分的javaweb項(xiàng)目都可以執(zhí)行成功,如果不行,請(qǐng)確認(rèn)是否排查完錯(cuò)誤,并且按照我的步驟一步步走下來(lái)。
當(dāng)然,我的項(xiàng)目還不行,出來(lái)了各種問題,于是下面我來(lái)講一下我的解決過(guò)程
遇到問題處理
我遇到的問題不代表全部解決方案,畢竟代碼這種東西總會(huì)出來(lái)各種稀奇古怪的問題。有問題不是我這邊總結(jié)發(fā)的可以評(píng)論出來(lái),如果我知道會(huì)更新文章出來(lái)
缺失jar依賴
這種情況下,就需要引入對(duì)應(yīng)的jar包
如果是常用的jar我推薦一個(gè)maven庫(kù),直接從里面下載jar進(jìn)行引入,如果我給的maven庫(kù)沒有對(duì)應(yīng)的jar包下載,那么你需要另外找?guī)爝M(jìn)行下載
除了上述常用的jar包出現(xiàn)之外,我還遇到如下問題

java: 程序包javax.servlet不存在
這個(gè)我通過(guò)查找百度,實(shí)際上是tomcat的依賴jar包,只需要引入本地的tomcat的servlet-api.jar包即可
同樣打開Project Structure配置,打開Lbraries界面
點(diǎn)擊右邊已經(jīng)引入的加號(hào),繼續(xù)引入

找到tomcat的依賴包servlet-api.jar,
注意我的本地的對(duì)應(yīng)依賴包路徑為
D:\software\tomcat\apache-tomcat-9.0.54\lib\servlet-api.jar

同樣不要忘記Apply應(yīng)用
此外,我還遇到一個(gè)

該jar包同樣通過(guò)百度查找也是tomcat的依賴,需要引入tomcat的jasper.jar
步驟和上面相同

未找到j(luò)ar對(duì)應(yīng)方法
另外,如果遇到引入的jar沒有問題,但是對(duì)應(yīng)的方法爆紅,那么很大可能是由于jar版本不兼容,
這種情況,我通過(guò)查找百度得知我遇到的那個(gè)jar,高于多少多少版本的對(duì)應(yīng)爆紅的方法被刪掉了,然后我一看實(shí)際引入的對(duì)應(yīng)jar,確實(shí)高出了不少版本,然后我把對(duì)應(yīng)的依賴換成低版本就不報(bào)錯(cuò)了。
對(duì)應(yīng)如何替換jar,和配置的Libraries界面操作一樣!
項(xiàng)目實(shí)際啟動(dòng)結(jié)果
以下截圖為我項(xiàng)目實(shí)際配置好之后啟動(dòng)的截圖,(只發(fā)出一個(gè)入口界面)

結(jié)語(yǔ)
以上為我使用IDEA 導(dǎo)入別人的javaweb項(xiàng)目進(jìn)行部署
也走了很多彎路,發(fā)出來(lái)除了作記錄,也幫助需要的人進(jìn)行配置。
再后面如果更新,很大是會(huì)在遇到的配置的問題上進(jìn)行更新,以上。
到此這篇關(guān)于IDEA 如何導(dǎo)入別人的javaweb項(xiàng)目進(jìn)行部署的文章就介紹到這了,更多相關(guān)idea導(dǎo)入javaweb項(xiàng)目部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java利用數(shù)組隨機(jī)抽取幸運(yùn)觀眾
這篇文章主要為大家詳細(xì)介紹了java利用數(shù)組隨機(jī)抽取幸運(yùn)觀眾,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
Java中的模板模式說(shuō)明與實(shí)現(xiàn)
這篇文章主要介紹了Java中的模板模式說(shuō)明與實(shí)現(xiàn),模板方法模式,又叫模板模式,在一個(gè)抽象類公開定義了執(zhí)行它的方法的模板,它的子類可以更需要重寫方法實(shí)現(xiàn),但可以成為典型類中定義的方式進(jìn)行,需要的朋友可以參考下2023-10-10
Java入門絆腳石之Override和Overload的區(qū)別詳解
重寫是子類對(duì)父類的允許訪問的方法的實(shí)現(xiàn)過(guò)程進(jìn)行重新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫!重寫的好處在于子類可以根據(jù)需要,定義特定于自己的行為。重載是在一個(gè)類里面,方法名字相同,而參數(shù)不同。返回類型可以相同也可以不同2021-10-10
詳解Java集合類之HashTable,Properties篇
這篇文章主要為大家詳細(xì)介紹一下Java集合類中HashTable和Properties的用法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,感興趣的可以了解一下2022-07-07

