【发布时间】:2015-08-28 01:16:29
【问题描述】:
我正在开发一个 Web 应用程序(这是我的第一次)并且对使用属性文件非常困惑。我不知道将属性文件放在哪里。
问题是我把它放在 WEB_INF 文件夹下。当我测试将它作为 Java 应用程序运行以检查数据库连接是否根据属性文件中的属性工作时,它可以正常工作。
但是当我在服务器中将它作为 Web 应用程序运行时,它无法加载属性文件,说它在指定的路径中找不到文件。我尝试使用我可以提供的所有可能路径并更改整个项目中的文件目录。但我一直收到同样的错误。
然后我再次从头开始更改我的课程,认为我的代码在加载属性文件时存在某种错误。当部署为 Web 应用程序时,它似乎也找不到该文件。但我的测试应用程序工作正常。我把这个文件放在哪里以及如何使用它。我已在此线程https://stackoverflow.com/a/2161583/2999358 中阅读了@BalusC 的答案,但我不知道为什么会发生这种情况。有人可以帮我解决这个问题吗?
我正在使用 Tomcat 8、Eclipse IDE 并在 JSF 框架上构建。
我加载属性文件的类
public class ConfigCache {
private static final File FILE = new File("./WebContent/WEB-INF/conf/config.properties");
private static final Properties PROPERTIES = new Properties();
public static final String JDBC_DRIVER = ConfigCache.getProperty("db.driverName");
public static final String DATABASE_URL = ConfigCache.getProperty("db.url");
public static final String DATABASE_USERNAME = ConfigCache.getProperty("db.user");
public static final String DATABASE_PASSWORD = ConfigCache.getProperty("db.pass");
public ConfigCache() {
}
public static String getProperty(String key) {
if (PROPERTIES.isEmpty()) {
loadProperties();
}
Object value;
return (value = PROPERTIES.get(key)) == null ? "" : value.toString();
}
private static void loadProperties() {
if (!FILE.exists()) {
throw new IllegalArgumentException("The 'config.properties' has not been found.");
}
try {
FileInputStream fis = null;
try {
fis = new FileInputStream(FILE);
PROPERTIES.load(fis);
} finally {
try {
if (fis != null) {
fis.close();
}
} catch (IOException exp) {
System.out.println("IOException @" + ConfigCache.class + " @ loadProperties() : " + exp);
}
}
} catch (Exception exp) {
System.out.println("Exception @" + ConfigCache.class + " @ loadProperties() : " + exp);
}
}
}
文件夹结构
【问题讨论】:
-
我建议停止使用 [java] 标记 Java EE 相关问题。如您所见,您只吸引了那些甚至懒得阅读您在此处链接的问题的傻瓜。
-
抱歉打错了。不会再发生了。 :)
标签: jsf properties-file web-inf