0

我有一个简单的 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文件所在的构造函数。

信使线 134 指向:

prop.load(new FileInputStream(routesFilename));

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

4

2 回答 2

0

从外观上看(如果您发布属性文件的内容,我更喜欢),config.properties 中有一个属性,例如routes = routes.properties. 当你打电话时,new file(routes);你会得到,FileNotFoundException因为你试图routes.properties在启动 java 的当前工作目录中打开(它不存在)

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

于 2013-07-02T20:28:21.990 回答
0

注意 prop.getProperty 方法不能抛出 FileNotFoundException。所以这个异常一定是在 prop.load(); 之前抛出的。

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

$ chmod 777 /home/user/routes.properties
$ chmod 777 /home/user/protocol.properties
于 2013-07-02T19:57:18.527 回答