在eclipse中放置属性文件的位置以及如何在本地和服务器上访问路径

我在这看到了一些类似的问题,但我不够了解它们,所以我想问问题并以自己的方式定制。

我有一个属性文件,我存储在src / main / resources中,然后在我的代码中引用它,如下所示:

Properties prop = new Properties(); InputStream input = null; try { input = new FileInputStream("src/main/resources/app.properties"); // load a properties file prop.load(input); 

这在本地工作,但是当我创建.war文件并将其部署到服务器时,它不知道属性文件在哪里。 我在哪里放置这个属性文件,如何在代码中引用它,以便我可以在本地运行它,并在服务器上运行没有任何问题?

我假设您有maven项目,您可以将该属性文件放在src/main/resources/app.properties并更改代码以将其读取为

 getClass().getClassLoader().getResourceAsStream("/app.properties"); 

看来你正在使用maven项目所以在/ src / main / resources /中定义的文件
可以在类路径中直接使用。 像/src/main/resources/app.properties一样在classpath上作为classpath:app.properties。

从我看到的架构,我猜你正在使用Maven。 所以你的属性文件将位于你的{warFile} / WEB-INF / classes中。 要在运行时访问此类文件,请使用以下代码:

 input = new FileInputStream(getClass().getClassLoader().getResourceAsStream("/app.properties")); 

这是因为位于WEB-INF / classes中的所有内容都是“在您的类路径中”。 要访问类路径,必须获取相关的类加载器。 最好的方法是使用同一个WAR中的类。