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