java-web - Java WEB:什么樣的jar包必須放到WEB-INF下?有些包放外面tomcat就起不來(lái)
問(wèn)題描述
有2個(gè)jar包c(diǎn)ommons-fileupload-1.3.2.jar和commons-io-2.5.jar我開始是把這兩個(gè)包和其他包一樣放外面的,也就是External Libraries寫好相關(guān)的類之后,在web.xml配置servlet和mapping
<servlet> <servlet-name>mytest</servlet-name> <servlet-class>servlet.FileUploadServlet</servlet-class></servlet><servlet-mapping> <servlet-name>mytest</servlet-name> <url-pattern>/upload</url-pattern></servlet-mapping>
然后Tomcat就無(wú)法啟動(dòng),提示:
嚴(yán)重: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component
java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException
問(wèn)題:commons-fileupload和commons-io這兩個(gè)jar一定要放在WEB-INF下么,為什么?為什么不能放在External Libraries?我其他包都放在External中都能用啊怎么這兩個(gè)就進(jìn)不來(lái)呢?我在WEB-INF下新建一個(gè)lib,然后把這兩個(gè)包放進(jìn)去,發(fā)布的時(shí)候就有了,然后運(yùn)行也正常這兩個(gè)包有什么特別的地方?為什么一定要放WEB-INF下
問(wèn)題解答
回答1:idea的tomcat插件發(fā)布應(yīng)用是這個(gè)Artifact
看看你的當(dāng)前項(xiàng)目的Artifact是不是沒(méi)有External Libraries里面依賴的jar包
那就再這個(gè)Artifact里面加上lib(在項(xiàng)目web/WEB-INF/lib下放入jar包會(huì)自動(dòng)加到Artifact里面。這就是為什么你說(shuō)的為什么放到WEB-INF才行的原因。當(dāng)然你完全可以把依賴jar包還放在External Libraries,在Artifact這里添加上就行,不過(guò)還是推薦把依賴的jar包放在項(xiàng)目web/WEB-INF/lib里面,把這個(gè)文件夾作為一個(gè)jar庫(kù)放在External Libraries)
之后在啟動(dòng)tomcat依賴問(wèn)題得到解決
回答2:先糾正一下,是WEB-INF目錄,不是WEB-INFI。
發(fā)布之前,你是用maven對(duì)項(xiàng)目打包的嗎?如果maven中有commons-fileupload的依賴,打包時(shí)會(huì)放在WEB-INF/lib下的。
回答3:運(yùn)行時(shí)依賴的包
回答4:放在WEB-INF/lib中的jar包,即使不引入為依賴,package的時(shí)候,也會(huì)默認(rèn)被打到最終的war包里(位置依然是WEB-INF/lib)。至于位置不在WEB-INF/lib下的jar包,則需要引入為依賴,才會(huì)在package時(shí)打入最終的war包(依然會(huì)位于WEB-INF/lib)。引入為依賴的方法可參考3樓的解答
回答5:我也遇到過(guò)這個(gè)問(wèn)題,我發(fā)現(xiàn)Import的Jar發(fā)布時(shí)沒(méi)添加到WEB-INF/lib下,在Tomcat目錄下確實(shí)看不到相應(yīng)的Jar,于是我每次Import后都再?gòu)?fù)制粘貼到的WEB-INF/lib下,甚至有時(shí)直接不Import直接就往Referenced Libraries和WEB-INF/lib下粘貼。
相關(guān)文章:
1. mysql - 這條聯(lián)合sql語(yǔ)句哪里錯(cuò)了2. webpack - vuejs+java前后臺(tái)分離實(shí)現(xiàn)及部署問(wèn)題3. docker鏡像push報(bào)錯(cuò)4. 在html文件的目錄下輸入代碼按回車后顯示這個(gè),哪位大佬幫幫我 呀5. 網(wǎng)站在移動(dòng)的環(huán)境下手機(jī),pc打不開6. php - TP5的登錄驗(yàn)證問(wèn)題7. mysql - 我的myeclipse一直連顯示數(shù)據(jù)庫(kù)連接失敗,不知道為什么8. javascript - 微信小程序picker為什么會(huì)變成兩行?9. javascript - 微信h5發(fā)送圖文信息,部分設(shè)備點(diǎn)擊“發(fā)送”按鈕時(shí)沒(méi)反應(yīng),問(wèn)題較難重現(xiàn),如何能找到可能存在問(wèn)題的點(diǎn)?10. linux pdo 安裝配置中 make 遇到問(wèn)題,請(qǐng)大家指教!
