此篇博客緣起:部署java web系統到阿里雲服務器(ubuntu14.04)的時候,有如下兩個問題java
開發的時候是在windows上的,運行正常,部署的時候就出問題了,確定是windows和linux路徑區別致使的(一個小問題來回鼓搗了幾個小時,由於有本身對windows下和linux下的區別還不是特別瞭解,還有就是每次在windows下修改完成之後都要從新上傳到阿里雲,項目較大來回也須要較多時間。。。),遂決定好好看看java web路徑的問題。linux
Thread.currentThread().getContextClassLoader().getResource("/").toURI().getPath() null Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath() /D:/workspace/EPEducationManager/build/classes/ UserResource.class.getClassLoader().getResource("/").toURI().getPath() null UserResource.class.getClassLoader().getResource("").toURI().getPath() /D:/workspace/EPEducationManager/build/classes/ UserResource.class.getResource("").toURI().getPath() /D:/workspace/EPEducationManager/build/classes/com/phy/em/user/rest/ UserResource.class.getResource("/").toURI().getPath() /D:/workspace/EPEducationManager/build/classes/ System.getProperty("user.dir") D:\workspace\EPEducationManager
Thread.currentThread().getContextClassLoader().getResource("/").toURI().getPath() /D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/EPEducationManager/WEB-INF/classes/ Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath() /C:/tomcat7/lib/ UserResource.class.getClassLoader().getResource("/").toURI().getPath() /D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/EPEducationManager/WEB-INF/classes/ UserResource.class.getClassLoader().getResource("").toURI().getPath() /C:/tomcat7/lib/ UserResource.class.getResource("").toURI().getPath() /D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/EPEducationManager/WEB-INF/classes/com/phy/em/user/rest/ UserResource.class.getResource("/").toURI().getPath() /C:/tomcat7/lib/ System.getProperty("user.dir") C:\Program Files (x86)\eclipse
根據上面的輸出選擇對應的獲取路徑的方法,特別注意獲取獲得的path前面有"/",不要手賤刪除"/",對,我就是那個手賤的人,刪除了"/",由於看到前面有斜槓在windows資源管理器中是打不開的,我就刪除了,結果在windows上運行是正確的,可是部署在linux上的時候把"/"刪除了就成了"var/share/lib",明顯這個錄警示不正確的,原本是根目錄下var...成了當前目錄下var...web
獲取路徑就能夠讀取制定目錄下的配置文件了spring
<bean id=」propertyConfigurer」 class=」org.springframework.beans.factory.config.PropertyPlaceholderConfigurer」> <property name=」location」> <value>/WEB-INF/configInfo.properties</value> </property> <property name=」fileEncoding」 value=」utf-8″ /> </bean>
在xml中使用ubuntu
<property name=」host」> <value>${email.host}</value> </property> <property name=」port」> <value>${email.port}</value> </property>
經過以上兩步就能夠完成在讀取property配置文件並注入到對應的bean中,可是有時候咱們並不須要爲了讀取配置而建立一個bean,咱們只想代碼中直接讀取配置文件,可使用以下的方式windows
ResourceUtils.getFile("classpath:config.properties").getPath()
D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\EPEducationManager\WEB-INF\classes\
能夠直接在代碼中使用"classpath"來定位配置文件,獲取獲得的是一個File對象,固然了獲取路徑確定沒問題tomcat
經過此次的填坑經歷又一次堅決了使用linux的信心和決心,之前屢次使用linux的嘗試都失敗了,本着不pass(怕死)的心態又一次安裝了kali和linux mint雙系統(原來是windows和mint,把windows格了,把心愛的linux安裝在了心愛的SSD上),堅持着一個月來,感受愈來愈駕輕就熟服務器