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)行部署,也比較簡單;
但是我遇到了一個怎么也解決不了的問題,沒有報(bào)任何錯誤,但是tomcat怎么也啟動不起來??偸菆?bào)encountered problem
這樣的提示問題。
我不部署任何項(xiàng)目,直接啟動本機(jī)的tomcat,是能夠直接跳轉(zhuǎn)訪問到tomcat的管理界面,但是在eclipse一直啟動不起來;我搜索的幾乎所有的結(jié)果,都是說它eclipse配置tomcat會進(jìn)行重定向,需要把eclipse配置的tomcat的server.xml里的<Context></Context>
標(biāo)簽的內(nèi)容注釋掉或刪除掉,才能夠不會報(bào)錯。
但是這邊又有一個問題,刪除之后確實(shí)能夠啟動tomcat了,我導(dǎo)入的javaweb項(xiàng)目是通過訪問index.jsp進(jìn)行訪問項(xiàng)目,發(fā)現(xiàn)該配置的都配置了,硬是沒有編譯成功,沒有把主入口編譯出來,無法訪問到我需要訪問的項(xiàng)目。
ps:我有在第一次配置成功,可以訪問,但是項(xiàng)目出現(xiàn)問題;第二次配置的時候就出現(xiàn)上面的情況
折磨了我很久,于是我打算使用idea進(jìn)行配置javaweb項(xiàng)目;也折騰了很久,為了以后方便,把我這次使用idea配置javaweb的過程記錄下來。
準(zhǔn)備工作
IDEA
安裝IDEA,這個是就不需要多說了,不過雖然版本一般不會影響配置javaweb,但是防止版本不一致部分操作可能不同,還是發(fā)出我使用的IDEA版本
我的IDEA版本為: IDEA 2021.1.3
tomcat
首先,你本機(jī)一定需要下載一個tomcat,版本無所謂都是可以的。然后記住你下載tomcat存放到本機(jī)的位置。如我的在D盤
D:\software\tomcat\apache-tomcat-9.0.54
jdk
同樣,你的本機(jī)需要下載安裝jdk,這邊有一點(diǎn)很重要,配置javaweb,里面的jdk版本一定要跟著javaweb項(xiàng)目來。
我的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
文件
重要的事情說三遍!!!
此外,還有一個很重要的事情,萬一,你的IDEA沒有識別出你的javaweb項(xiàng)目的src是java代碼
需要標(biāo)注src
文件夾為資源文件(即src文件夾不是藍(lán)色)對src文件夾鼠標(biāo)右鍵----》Mark Directory as ----》 Rources Root
配置JavaWeb項(xiàng)目
接下來是重頭
project Structure…
點(diǎn)擊File ---> project Structure...
打開項(xiàng)目配置界面
界面為
project Structure… --> Project
里面的Project
界面需要配置兩個,一個是Project SDK
,一個是Project language level
SDK即jdk, language level即jdk版本
導(dǎo)入本機(jī)配置好的jdk(這里不額外教學(xué)idea配置jdk,詳情百度,如果沒有的話)
選擇對應(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
這個是java代碼需要的依賴包,如果你有寫過Maven項(xiàng)目或者說是Springboot項(xiàng)目,和在pom.xml引入依賴的原理是一樣的。
初始為上圖,什么內(nèi)容都沒有,為空;
然后我們點(diǎn)擊加號+
選擇java引入
在我的項(xiàng)目中,只有在webContent--->WEB-INF ---> lib
文件夾下才有對應(yīng)的jar包,所以我只需要引入這個地方的jar包即可。如果你的項(xiàng)目中有別的文件夾也有jar包,需要一并引入
點(diǎn)擊OK,然后會提示
Library 'lib' will be added to the selected modules
意思是是否將引入的這個包引入到modules模塊,也就是我跳過的地方
引入modules,也意味著,它是會引入到整個項(xiàng)目的配置,
我們選中,然后點(diǎn)擊OK即可
project Structure… --> Modules
這個時候我們再回過頭看看modules界面
拋開剛剛引入的lib
剩下的為初始界面
同樣,我們來看看Modules--->Sources
以及Modules--->Paths
Sources里代表的是我們整個項(xiàng)目的資源情況
Paths 進(jìn)行配置導(dǎo)包的操作,一般情況下,javaweb導(dǎo)包是會生成war,tomcat進(jìn)行啟動。
這里Modules我們什么都不需要操作,只給大家說明作用。
project Structure… --> Facets
Facets
初始界面為:
初始是空白的狀態(tài),什么都沒有。它的作用就一個:讓IDEA知道這個項(xiàng)目是什么項(xiàng)目,知道需要怎么去運(yùn)行這個項(xiàng)目,配置框架
我們這個項(xiàng)目是javaweb項(xiàng)目,自然而然需要配置為web框架
點(diǎn)擊加號+
,選擇web
同樣也會提示一個提示
Web facet will be added to selected module
它的意思是是否將web框架添加到選擇的module模塊
同樣我們,選中項(xiàng)目module,選擇OK
接下來一步非常重要
接下來一步非常重要
接下來一步非常重要
假如你現(xiàn)在點(diǎn)擊Apply
應(yīng)用配置的話,你會發(fā)現(xiàn),項(xiàng)目會多出一個文件夾web
但是只到這里的話,該操作默認(rèn)給你創(chuàng)建一個新的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)入到我們的下一個配置Artifacts
project Structure… --> Artifacts
打開Artifacts
初始為
也是空白,我們同樣點(diǎn)擊加號+
然后選擇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)用配置!!!
還有一個地方很重要,
在Artifact的進(jìn)行配置需要打成war
包的各種
那么你首先需要在該界面的Type
是Web Application Exploded
下進(jìn)行配置排查完錯誤之后
把這里的Type
從Web Application Exploded
改成Web Application Archive
配置tomcat
接下來我們配置最后一步,配置tomcat
點(diǎn)擊Add Configuration
添加配置
出現(xiàn)界面如下
然后我們點(diǎn)擊加號+
找到tomcat,
選擇local 本機(jī)
然后界面為:
一般情況下,你如果沒有配置過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
自動添加
也可以點(diǎn)Deployment手動添加
最后同樣也不要忘記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í)行成功,如果不行,請確認(rèn)是否排查完錯誤,并且按照我的步驟一步步走下來。
當(dāng)然,我的項(xiàng)目還不行,出來了各種問題,于是下面我來講一下我的解決過程
遇到問題處理
我遇到的問題不代表全部解決方案,畢竟代碼這種東西總會出來各種稀奇古怪的問題。有問題不是我這邊總結(jié)發(fā)的可以評論出來,如果我知道會更新文章出來
缺失jar依賴
這種情況下,就需要引入對應(yīng)的jar包
如果是常用的jar我推薦一個maven庫,直接從里面下載jar進(jìn)行引入,如果我給的maven庫沒有對應(yīng)的jar包下載,那么你需要另外找?guī)爝M(jìn)行下載
除了上述常用的jar包出現(xiàn)之外,我還遇到如下問題
java: 程序包javax.servlet不存在
這個我通過查找百度,實(shí)際上是tomcat的依賴jar包,只需要引入本地的tomcat的servlet-api.jar包即可
同樣打開Project Structure
配置,打開Lbraries界面
點(diǎn)擊右邊已經(jīng)引入的加號,繼續(xù)引入
找到tomcat的依賴包servlet-api.jar
,
注意我的本地的對應(yīng)依賴包路徑為
D:\software\tomcat\apache-tomcat-9.0.54\lib\servlet-api.jar
同樣不要忘記Apply
應(yīng)用
此外,我還遇到一個
該jar包同樣通過百度查找也是tomcat的依賴,需要引入tomcat的jasper.jar
步驟和上面相同
未找到j(luò)ar對應(yīng)方法
另外,如果遇到引入的jar沒有問題,但是對應(yīng)的方法爆紅,那么很大可能是由于jar版本不兼容,
這種情況,我通過查找百度得知我遇到的那個jar,高于多少多少版本的對應(yīng)爆紅的方法被刪掉了,然后我一看實(shí)際引入的對應(yīng)jar,確實(shí)高出了不少版本,然后我把對應(yīng)的依賴換成低版本就不報(bào)錯了。
對應(yīng)如何替換jar,和配置的Libraries界面操作一樣!
項(xiàng)目實(shí)際啟動結(jié)果
以下截圖為我項(xiàng)目實(shí)際配置好之后啟動的截圖,(只發(fā)出一個入口界面)
結(jié)語
以上為我使用IDEA 導(dǎo)入別人的javaweb項(xiàng)目進(jìn)行部署
也走了很多彎路,發(fā)出來除了作記錄,也幫助需要的人進(jìn)行配置。
再后面如果更新,很大是會在遇到的配置的問題上進(jìn)行更新,以上。
到此這篇關(guān)于IDEA 如何導(dǎo)入別人的javaweb項(xiàng)目進(jìn)行部署的文章就介紹到這了,更多相關(guān)idea導(dǎo)入javaweb項(xiàng)目部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java利用數(shù)組隨機(jī)抽取幸運(yùn)觀眾
這篇文章主要為大家詳細(xì)介紹了java利用數(shù)組隨機(jī)抽取幸運(yùn)觀眾,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05Java入門絆腳石之Override和Overload的區(qū)別詳解
重寫是子類對父類的允許訪問的方法的實(shí)現(xiàn)過程進(jìn)行重新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫!重寫的好處在于子類可以根據(jù)需要,定義特定于自己的行為。重載是在一個類里面,方法名字相同,而參數(shù)不同。返回類型可以相同也可以不同2021-10-10詳解Java集合類之HashTable,Properties篇
這篇文章主要為大家詳細(xì)介紹一下Java集合類中HashTable和Properties的用法,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定幫助,感興趣的可以了解一下2022-07-07