【问题标题】:Tomcat - FileNotFoundExceptionTomcat - FileNotFoundException
【发布时间】:2013-09-09 10:27:40
【问题描述】:

我在我的 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");
[...]

我做错了吗?

【问题讨论】:

    标签: java eclipse tomcat filenotfoundexception


    【解决方案1】:

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

    请查看this example

    【讨论】:

    • 您的解决方案与@duffymo 的解决方案相结合,奏效了。但是我必须在 WEB-INF 中手动添加 classes 文件夹,因为当我 GWT 编译我的项目时没有生成它。你知道为什么吗?
    【解决方案2】:

    我是不是做错了什么?

    显然,是的。如果一切顺利,您将不会遇到异常。

    您应该将该资源作为流从类路径加载。

    这意味着你的 WAR 应该是这样的:

    WEB-INF/classes/config/DBconfig.properties
    

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

    【讨论】:

    • 如果我不想更改文件夹结构怎么办?
    猜你喜欢
    • 1970-01-01
    • 2011-07-07
    • 2023-04-03
    • 2015-12-22
    • 1970-01-01
    • 2023-03-17
    • 2011-12-10
    • 2013-12-09
    • 2011-06-09
    相关资源
    最近更新 更多