我在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");
[...]
我做错了吗?
答案 0 :(得分:2)
每个webapp在tomcat中都有自己的类加载器。 ClassLoader.getSystemResource
将使用用于加载引导程序和tomcat应用程序的系统类加载器。但系统类加载器对您的webapp及其类路径一无所知。使用正确的类加载器是必不可少的
有很多解决方案可以访问正确的类加载器。一种解决方案是使用ClassLoader#getResource。
请查看this example
答案 1 :(得分:1)
我做错了吗?
显然,是的。如果一切顺利,你就不会得到例外。
您应该将该资源作为来自类路径的流加载。
这意味着您的WAR应如下所示:
WEB-INF/classes/config/DBconfig.properties
由于您使用的是Tomcat,我建议您学习如何设置JNDI数据源连接池。以这种方式外部化您的数据库连接信息。