2

我在我的 tomcat 服务器上部署了一个 Web 应用程序。我的文件夹结构是 TOMCAT_HOME/webapps/segnalazioni_degrado/config。

config 文件夹包含一些属性文件。当我在开发模式(Eclipse)下运行我的应用程序时,一切正常,但由于我将它部署在 Tomcat 上,我得到了 filenotfound 异常。这是我在服务器上加载 .properties 文件的方式:

[...]
Properties props = new Properties();
    try {
        props.load(new FileInputStream("config/DBconfig.properties"));

    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
    url = props.getProperty("url");
    user = props.getProperty("user");
    password = props.getProperty("password");
[...]

难道我做错了什么?

4

2 回答 2

2

每个 webapp 在 tomcat 中都有自己的类加载器。将ClassLoader.getSystemResource使用用于加载引导程序和 tomcat 应用程序的系统类加载器。但是系统类加载器对你的 webapp 和它的类路径一无所知。使用正确的类加载器是必不可少的。
有很多解决方案可以访问正确的类加载器。一种解决方案是使用ClassLoader#getResource

请看这个例子

于 2013-09-09T10:37:58.060 回答
1

难道我做错了什么?

显然,是的。如果一切顺利,你就不会例外。

您应该将该资源作为来自类路径的流加载。

这意味着您的 WAR 应如下所示:

WEB-INF/classes/config/DBconfig.properties

由于您使用的是 Tomcat,我建议您学习如何设置 JNDI 数据源连接池。以这种方式将您的数据库连接信息外部化。

于 2013-09-09T10:32:17.873 回答