我有一个简单的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
参数发送?感谢。
答案 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
作为附注,您使用一个属性文件来引用另一个属性,这很好,但有点奇怪或非常规。此外,您应该将这些文件粘贴在“资源”文件夹中以删除绝对路径并获得可移植性。