您好,登錄后才能下訂單哦!
IDEA使用Maven項目無法加入本地Jar包如何解決?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
使用IDEA編輯Web項目已經(jīng)逐漸超過了使用eclipse的人數(shù),但是IDEA對于pom.xml的執(zhí)行也就是Maven方式導(dǎo)包支持并不是很完善,簡單來說就是pom.xml上面記錄的依賴庫一般都能導(dǎo)入,但是如果pom.xml上面的某個依賴庫失效,比如遠程服務(wù)器關(guān)閉或者網(wǎng)絡(luò)不通,或者是你想要加入本地硬盤上的某個jar包而不修改pom.xml的時候,IDEA的弊端就會顯現(xiàn)出來。主要表現(xiàn)就是無法獲得的依賴庫或者本地Jar包無法放到/WEB-INF/lib目錄下,導(dǎo)致Web項目部署時報錯。
一個常見的錯誤就是ojdbc8,也就是連接Oracle數(shù)據(jù)庫12c所需的最新的jdbc驅(qū)動包,這個在maven網(wǎng)站上是可以搜索到的,如下http://mvnrepository.com/artifact/com.github.noraui/ojdbc8/12.2.0.1
給出的依賴庫網(wǎng)絡(luò)路徑為
<!-- https://mvnrepository.com/artifact/com.github.noraui/ojdbc8 --> <dependency> <groupId>com.github.noraui</groupId> <artifactId>ojdbc8</artifactId> <version>12.2.0.1</version> </dependency>
然而這個路徑在2015年還有效,在2018年已經(jīng)連接不上了(目前唯一還有效的是ojdbc for java 1.4的版本,2015年,無法支持oracle 10g及以后的數(shù)據(jù)庫),如果你在maven里這樣配置,那么IDEA的models里就會告訴你找不到該依賴庫,當(dāng)然你的WEB-INF里面也就不會有jdbc的jar包,你的應(yīng)用當(dāng)然就連接不了數(shù)據(jù)庫了
IDEA會貼心的在相關(guān)maven依賴庫下面加波浪線,并且把無法加載的資源用紅色表示。
如果此時我們手動向Libraries里面加入本地的Jar包可不可以呢?
能加當(dāng)然是能加進去,不過根據(jù)我多次的反復(fù)實驗發(fā)現(xiàn),你加入到Project Structure里面的Models或者Libraries里面之后,編寫代碼的時候是可以找到依賴的,但是在打war包的時候還是不會把ojdbc加入進去的,所以還是沒能達到我們想要的效果。這主要是因為IDEA只會把pom.xml里面記錄的jar包放入到WEB-INF,而不會理睬你其他方式加入的jar包。所以我們最后還得從maven入手。
此時我們就需要在上圖出現(xiàn)問題的地方找到標(biāo)紅色的Classes下面的路徑,通過手動點擊來修改成本地jar包的位置,并且應(yīng)該變?yōu)榫G色,如下
這樣IDEA就不會把這個maven源報錯了,同時pom.xml并沒有被修改,只是項目目錄下.idea目錄下的某個.iml被修改了,這個修改要好好保留,因為不知道什么時候你一編譯就又會按照pom.xml再給你改回來。如果需要長期不讓它報錯,可以使用cmd命令把本地的jar包加入到本地maven庫中,命令如下:(把當(dāng)前目錄下的ojdbc8.jar按照上面的pom.xml中的配置加入到本地maven源)
mvn install:install-file -Dfile=ojdbc8.jar -DgroupId=com.github.noraui -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar
另外如果不把maven里面自己設(shè)置的jar包輸出到web根目錄lib文件夾的話,那么打出來的war包或者是放在tomcat里跑還是會在啟動的時候報錯,如下就是使用了HttpClient也在maven里加入了HttpClient的依賴,但是啟動tomcat仍然報錯找不到類,此時你需要按照tomcat的一貫套路把相關(guān)jar包放到web根目錄的lib目錄下
此時還是進入Project Structure,在左側(cè)找到Artifacts,然后找到WEB-INF,新建一個lib目錄,然后點擊加號把相關(guān)的庫引入
加完之后
只有這樣,打出來的war包的WEB根目錄下才會有l(wèi)ib文件夾和里面的相關(guān)依賴jar包
如果你發(fā)現(xiàn)修改了這里還沒有把自定義的jar包打包到WEB-INF下面(只是在代碼窗口里不報錯了),一個可能性是在編譯過程中剛剛的修改又被pom.xml給覆蓋了,另一個原因可能是你沒有把編譯結(jié)果輸出到待發(fā)布目錄,通過下面的方式可以修改。
后記:在沒有使用maven框架的時候,java文件和包是可以直接放在src目錄下的,但是引入maven之后,IDEA會自動幫你吧原來src下的包遷移到src/main/java下面,同時建立src/main/resources目錄,這里面一般放我們的log4j配置文件log4j.properties。
在沒有maven框架的時候,log4j.propertise應(yīng)該放在src下面才能被自動識別,而加入maven框架之后應(yīng)該放在src/main/resources下,否則log4j找不到默認(rèn)配置文件
如下:在不使用maven框架時的目錄結(jié)構(gòu),所有jar包都是放在項目根目錄下
使用maven后的目錄結(jié)構(gòu),沒有jar包了,以pom.xml進行引入
另外還需要注意的一點就是,對于pom.xml里面和idea里面均有多出設(shè)置JDK版本的地方,最好統(tǒng)一,否則無法build成功,首先是pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <groupId>groupId</groupId> <artifactId>XDphone</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.51</version> </dependency> ...... </dependencies> </project>
然后是項目代碼風(fēng)格
然后是編譯器版本在File-Settings里面
看完上述內(nèi)容,你們掌握IDEA使用Maven項目無法加入本地Jar包如何解決的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。