12

我创建了一个 REST Web 服务,我在其中创建了一个 config.properties 文件来存储和检索整个应用程序中的一些用户名和密码。我将它存储在 /src/main/resources/config.properties 中。

当我尝试从 Eclipse 的 java 代码中加载它时,它工作正常。但是当我在 tomcat 中部署它时,它没有加载。我用来加载属性文件的代码是

properties.load(new FileInputStream("src/main/resources/config.properties"));

谁能帮我解决这个问题

4

4 回答 4

30

您部署到 Tomcat 的是一个战争文件。Tomcat 不知道也不关心应用程序源所在的目录。

里面的文件被 Mavensrc/main/resources复制到该target/classes目录,然后这个目录被复制到已WEB-INF/classes部署的 web 应用程序的目录中,该目录位于您的 webapp 的类路径中。所以你只需要使用类加载器加载文件:

properties.load(MyClass.class.getResourceAsStream("/config.properties"));

(MyClass 是您的 webapp 的任何类)。

于 2013-03-10T09:47:18.743 回答
2

如果您的属性文件在 WEB-INF/classes 中,您可以轻松地做到这一点。在这种情况下,只需编写类似

Properties props = new Properties();
props.load(getClass().getResourceAsStream("/name.properties"));

显然,该文件可能位于类的子文件夹中。在这种情况下,您必须在调用 getResourceAsStream() 时指定完整路径

于 2013-03-10T09:43:43.030 回答
1

尝试从类路径加载它:-

final Properties properties = new Properties();
properties.load(this.getClass().getResourceAsStream("/config.properties"));
于 2013-03-10T09:44:28.140 回答
1

假设您想在运行时读取位于 /WEB-INF/props/example.properties 的 example.properties 文件。

    Properties properties = new java.util.Properties();  
        InputStream inputStream =     
            getServletContext().getResourceAsStream("/WEB-INF/props/example.properties");  
properties.load(inputStream);  

现在,我们准备从 example.properties 文件中获取值。

String value = properties.getProperty("propertyName");

示例属性文件:

例子.properties

属性名称 = 123

于 2013-03-10T09:56:15.827 回答