网上的一些方法
1.方法一
用类加载器
InputStream fis =TestProperties.class.getClassLoader().getResourceAsStream(“*.properties”)
2.方法二(示例TestProperties和init.properties在同一目录下)
InputStream fis =TestProperties.class.getResourceAsStream(“*.properties”)
如果不在同一目录下,用../格式或将pro文件放在classpath下,用/*.properties也行,/代表classpath。
3.方法三,对于Web工程也可以这样。
先获取ServletContext,然后
InputStream in=context.getResourceAsStream(“/WEB-INF/classes/init.properties”);
这个没试过。
4.方法四
用new FileInputStream("src/main/resources/*.properties");
FileInputStream("")里的结构是从项目的根文件夹开始的
当在web项目里时又发生错误了,于是我写了个
看看这个路径是从哪里开始,结果为
C:\Tomcat\apache-tomcat-8.5.20\bin\.
是在tomcat的bin里,所以要写“../webapps/项目名/WEB-INF/classes/*.properties”
所以说,当作为webservice部署到tomcat里时,若想使用当前目录,最好先使用System.out.println(new File(".").getAbsolutePath());查看一下当前目录是什么,因为他不一定是你的.class文件存放的目录
但是!!!
由于我的项目时用IDEA建了个maven管理的web项目(在D盘),然后用的本地的tomcat(在C盘),而打包发布的时候默认在D盘的target文件夹里边,所以System.out.println(new File(".").getAbsolutePath());结果在C盘tomcat的bin里没错,但是实际文件在D盘,还是报错。。。。
终极解决方案:在controller到service接口的方法里都加上HttpServletRequest request这个参数,在方法里用
request.getSession().getServletContext().getRealPath("/WEB-INF/classes/rewardSetting.properties");
来获得绝对路径从而解决错误!!!
终于解决了,哭一会