我在这看到了一些类似的问题,但我对它们的了解不够,所以我想问问题并按照自己的方式进行调整。
我有一个属性文件,我存储在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文件并将其部署到服务器时,它不知道属性文件在哪里。我在哪里放置这个属性文件,如何在代码中引用它,以便我可以在本地运行它,并在服务器上运行没有任何问题?
答案 0 :(得分:7)
我假设您有maven项目,您可以将该属性文件放在src/main/resources/app.properties
并更改代码以将其读取为
getClass().getClassLoader().getResourceAsStream("/app.properties");
答案 1 :(得分:3)
您似乎正在使用maven项目,因此在/ src / main / resources /
中定义了文件
可以在类路径中直接使用。和/src/main/resources/app.properties一样
在classpath上作为classpath:app.properties。
答案 2 :(得分:1)
从我看到的架构中,我猜你正在使用Maven。因此,您的属性文件将位于您{warFile} / WEB-INF / classes中。 要在运行时访问此类文件,请使用以下代码:
input = new FileInputStream(getClass().getClassLoader().getResourceAsStream("/app.properties"));
这是因为WEB-INF / classes中的所有内容都是“在您的类路径中”。要访问类路径,必须获取相关的类加载器。最好的方法是使用同一个WAR中的一个类。