摘要:作為項(xiàng)目開發(fā)人員,千萬不要外部包放到系統(tǒng)目錄和路徑下,這是在為以后埋坑。
源于學(xué)習(xí)用spring十分鐘搭建restful風(fēng)格的web服務(wù)
最近開始著手學(xué)習(xí)spring,按照官網(wǎng)的guide,十分鐘搭建一個(gè)restful風(fēng)格的web服務(wù)的hello world,原地址在這里:Building a RESTful Web Service。
一切過程都很順利,直到運(yùn)行的時(shí)候,出現(xiàn)了這個(gè)鬼:
第一反應(yīng)是官網(wǎng)的case太老,疏于更新了。這種情況也不是沒有。
但我一看spring的官網(wǎng)這么酷炫,貌似經(jīng)常更新,不應(yīng)該出現(xiàn)這么低級的錯(cuò)誤。
就我的經(jīng)驗(yàn)來看,這種問題,一般都是jar的版本問題導(dǎo)致的。
而對于servlet來說,就有兩種情況,要么是servlet包太老,要么就是servlet容器太老。
我google一下,在stackoverflow上,對于同一個(gè)問題,看到這么一個(gè)答案:
按照其解決步驟:
我查看了一下servlet容器,spring的demo里面是內(nèi)置tomcat8的,所以不存在容器問題,那么只可能是servlet包問題了。
這個(gè)時(shí)候第三個(gè)步驟:
千萬不要把servlet-api.jar或者j2ee.jar放在/WEB-INF/lib里,更糟糕的是放在JRE/lib或者JRE/lib/ext里面,這是新手常犯的錯(cuò)誤。
看到這里,我第一反應(yīng)是檢查了classpath的路徑,果然在一個(gè)路徑下發(fā)現(xiàn)有躺著一個(gè)servlet.jar,不知道什么時(shí)候放上去的。
移除掉這個(gè)jar,再運(yùn)行就成功了。
稍微有點(diǎn)遺憾的是,那位大神沒解釋原因。
我仔細(xì)回想了一下,大學(xué)時(shí)曾看過一些JVM類加載的問題,順便找到了這篇文章:
深入研究Java類加載機(jī)制
詳細(xì)請看那篇文章,這里簡單總結(jié)下:
JVM會(huì)優(yōu)先加載系統(tǒng)lib或者用戶自己配置的classpath下的jar包,然后再加載項(xiàng)目中的jar包。作為項(xiàng)目開發(fā)人員,千萬不要外部包放到系統(tǒng)目錄和classpath路徑下,這是在為以后埋坑。
有一個(gè)小tips:
對于eclipse,最好選擇eclipse自帶的servlet容器,其操作方式是:
右鍵項(xiàng)目 ---> Properties ---> Java Build Path ---> Add Library... ---> Server Runtime ---> J2EE Priview(當(dāng)然,如果你需要配置自己的tomcat,在這里選擇tomcat即可) ----> Finish.
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/64368.html
摘要:,到現(xiàn)在為止一切都按部就班,執(zhí)行上面的命令正常運(yùn)行,讀取里面的文件,并輸出相應(yīng)的屬性。那么,如果我們想改變配置文件的內(nèi)容是否需要修改源文件里的然后重新打包成呢顯然這樣做太麻煩也不太合理,你可以在外面配置一個(gè)新的讓里的去讀取。 Java中經(jīng)常要用到各種配置文件xxx.properties來控制程序的運(yùn)行或進(jìn)行國際化等但是也常常遇到配置文件放置路徑找不到的問題,這里以java.uitl.R...
摘要:本文章記錄本人在深入學(xué)習(xí)條件表達(dá)式中看書理解到的一些東西,并且整理記錄下來,加深記憶和方便之后的復(fù)習(xí)。表達(dá)式的值具有線性特征,如對連續(xù)的區(qū)間值進(jìn)行判斷。 本文章記錄本人在深入學(xué)習(xí)js條件表達(dá)式中看書理解到的一些東西,并且整理記錄下來,加深記憶和方便之后的復(fù)習(xí)。主要是深入學(xué)習(xí)if else和switch語句的一些性能優(yōu)化和邏輯思維。 提高條件性能的策略 js的條件表達(dá)式和其他語言一樣...
摘要:第一次寫技術(shù)文章,主要內(nèi)容是使用創(chuàng)建一個(gè)簡單的項(xiàng)目,如有操作或理解錯(cuò)誤請務(wù)必指出,當(dāng)謙虛學(xué)習(xí)。基本思想其實(shí)就是一個(gè)項(xiàng)目引用別的模塊包,最終項(xiàng)目被打成包發(fā)布。 第一次寫技術(shù)文章,主要內(nèi)容是使用maven創(chuàng)建一個(gè)簡單的SpringMVC WEB 項(xiàng)目,如有操作或理解錯(cuò)誤請務(wù)必指出,當(dāng)謙虛學(xué)習(xí)。做這一次的工作主要是因?yàn)橄爰訌?qiáng)一下自己對Spring Web 項(xiàng)目的理解,因?yàn)槠綍r(shí)都是直接寫業(yè)務(wù)代...
閱讀 2746·2021-11-16 11:45
閱讀 1654·2021-09-26 10:19
閱讀 2051·2021-09-13 10:28
閱讀 2803·2021-09-08 10:46
閱讀 1530·2021-09-07 10:13
閱讀 1525·2019-08-30 13:50
閱讀 1374·2019-08-30 11:17
閱讀 1455·2019-08-29 13:18