先来讲讲我所遇到的问题。最近有个新的项目添加新的功能。
修改之后部署到服务器上面发现取到classpath目录跑到别的地方去了。在本地测试却正常。
当时毛的着火了。硬是想不懂什么问题。
终于发现了这个问题的所在之处。首先!
原来的项目系统是
String basePath = getClass().getResource("/").toURI().getPath(); //原来的获取方法 在本地测试可以获取到的。但部署到服务器可能会发生读到别的地方去!是可能! 也有可能获取到别的地方
1.获取classpath目录必须使用以下的语句
String basePath = request.getServletContext().getRealPath("/"); //获取到classpath目录。也就是webRoot的目录
2.指定的目录写法。例如我要访问webRoot/Reg/GTRCODE.txt 目录文件的话。请用这种方式拼接!
String path = basePath.substring(0, basePath.length() - 1) + "/Reg/GTRCODE.txt";
之前我是用以下这种方式拼接的。本地开发环境可以运行读取。但是在服务器环境下就不行了。用了上面的成功解决这个问题了
String path = basePath.substring(0, basePath.length() - 1) + "\Reg\GTRCODE.txt";
这就是我解决读取classpath目录,本地环境和服务器环境遇到的问题