今天是學校機房的服務器上對之前的一個網站升級時發現了一個bug,我自己的機器上用的tomcat8,機房上是tomcat7,結果一運行就開始報找不到文件,最后發現是文件分隔符的問題

原來在代碼中涉及到路徑的寫法是request.getSession().getServletContext().getRealPath("/WEB-INF/"),總是File Not Found.於是修改為request.getSession().getServletContext().getRealPath("/") +"WEB-INF"+"/",重新編譯運行后正常,很奇葩的問題下午抽個時間又對request.getSession().getServletContext().getRealPath()進行了一番測試,發現即使使用File.separator也沒用,注意第5行結果
1 System.out.println(request.getSession().getServletContext().getRealPath("")); G:\apache-tomcat-8.5.24\webapps\servlet\ 2 System.out.println(request.getSession().getServletContext().getRealPath("/")); G:\apache-tomcat-8.5.24\webapps\servlet\ 3 System.out.println(request.getSession().getServletContext().getRealPath(File.separator)); G:\apache-tomcat-8.5.24\webapps\servlet 4 System.out.println(request.getSession().getServletContext().getRealPath(File.separator+ "WEB-INF")); G:\apache-tomcat-8.5.24\webapps\servlet\WEB-INF 5 System.out.println(request.getSession().getServletContext().getRealPath(File.separator + "WEB-INF" + File.separator)); G:\apache-tomcat-8.5.24\webapps\servlet\WEB-INF 6 System.out.println(request.getSession().getServletContext().getRealPath("/WEB-INF/"));G:\apache-tomcat-8.5.24\webapps\servlet\WEB-INF\
推薦寫法request.getSession().getServletContext().getRealPath("/") + 你的路徑
