Servlet - 寻址属性文件

时间:2013-07-02 19:42:42

标签: java servlets properties

我有一个简单的Servlet需要将一些properties文件传递给另一个类。

Properties prop = new Properties();
prop.load(new FileInputStream("/home/user/config.properties"));

以上工作正常。

但我无法在下面找到正确的绝对路径:

String protocol = prop.getProperty("protocol", "/home/user/protocol.properties");
String routes = prop.getProperty("routes", "/home/user/routes.properties");
MyClass message = new MyClass(protocol, routes, 0);

最后,我在tomcat日志

下面收到
    INFO: Server startup in 3656 ms
java.io.FileNotFoundException: routes.properties (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:97)
    at com.cc.verticals.Messenger.<init>(Messenger.java:134)
    at com.foo.MyClass.<init>(MyClass.java:42)
    at com.verticals.cc.util.VerticalUtil.setup(VerticalUtil.java:59)
    at com.verticals.cc.util.VerticalUtil.main(VerticalUtil.java:259)
    at com.verticals.cc.dao.VerticalDao.<init>(VerticalDao.java:24)
    at com.verticals.cc.controller.VerticalController.<init>(VerticalController.java:33)

第42行指向routes.properties文件所在的构造函数。

Messenger line 134指向:

prop.load(new FileInputStream(routesFilename));

任何想法如何解决属性文件并将其作为String参数发送?感谢。

2 个答案:

答案 0 :(得分:0)

请注意,prop.getProperty方法不能抛出FileNotFoundException。因此必须在prop.load();

之前抛出异常

请确保您已打开该文件的权限。打开终端并发出以下命令:

$ chmod 777 /home/user/routes.properties
$ chmod 777 /home/user/protocol.properties

答案 1 :(得分:0)

通过它的外观(我更喜欢发布属性文件的内容),config.properties中有一个属性routes = routes.properties。当您致电new file(routes);时,您会收到FileNotFoundException,因为您正在尝试在当前启动了java的工作目录中打开routes.properties

作为附注,您使用一个属性文件来引用另一个属性,这很好,但有点奇怪或非常规。此外,您应该将这些文件粘贴在“资源”文件夹中以删除绝对路径并获得可移植性。