request.getSession().getServletContext().getRealPath("/")为什么获取不到项目根路径?却获取到了 C:\Users\lenovo\AppData\Local\Temp\tomcat-docbase.6357278361805976111.8080\ 这个路径?求解大神指点一下。

解决方案 »

  1.   

    因为这是spring boot内置tomcat的原因,每次启动项目他的Tomcat的路径都不相同,是虚拟的路径,而且很多,过一段时间它可以自动清楚这些不用的文件夹,这个方法在spring boot里面不好用,也是刚要使用一个图片,放在tomcat服务器上可以访问到,但是重启就访问不到了,就是因为有了不同的运行目录,使用需要进行配置,首先配置server.tomcat.basedir=D:/tt,然后它就会把项目放在这个tt目录下,(当然可能实我自己的见解),然后我把图片存在了D:\tt\work\Tomcat\localhost\ROOT\upload,这个\work\Tomcat\localhost\ROOT是它自己建的,我建立了upload文件夹,然后再去配置的public void addResourceHandlers(ResourceHandlerRegistry registry){registry.addResourceHandler("/upload/**").addResourceLocations("file:///"+"D:\\tt\\work\\Tomcat\\localhost\\ROOT\\upload\\"); }
    这样我就可以页面上访问到http://localhost:8080/upload/8fa35b7d6b71a8af.jpg,希望对你有所帮助
      

  2.   

    springboot的话,可以用以下方法获取jar包的路径ApplicationHome home = new ApplicationHome(getClass());
    File sysfile = home.getSource();
    String jarPath = sysfile.getParentFile().toString();