我导入的项目在代码中有两个文件oov和config.properties文件这两个文件的真实路径,但当我开始提交拓扑时,出现了以下异常:
这一个在终端提交拓扑时
java.io.FileNotFoundException: config.properties (No such file or
directory)
这个在日志文件里
2015-12-15 04:21:50 STDIO [INFO] java.io.FileNotFoundException: oov.txt
(No such file or directory)
代码
FileInputStream finputstream = new FileInputStream(
"/home/user/workspace/imported-project/config.properties");
这是谁的程序员为oov写的
conf.put("PATH_TO_OOV_FILE", prop.getProperty("PATH_TO_OOV_FILE"));
我把它改成了
conf.put("/home/user/workspace/imported-project/oov.txt", prop.getProperty("/home/user/workspace/imported-project/oov.txt"));
但没用。
但是,我在提交config.propertied的拓扑内容时发现!它如何读取它并同时抛出异常?
这个项目有一个名为config.properties的文件
PATH_TO_QUERY_FILE=tweets.txt
PATH_TO_OOV_FILE=oov.txt
PATH_TO_OUTPUT_FILE=results.txt
,,,,,我应该用我拥有的真实路径替换这些路径还是让它们
2条答案
按热度按时间zujrkrfu1#
目录
/home/user/workspace/imported-project/
不会出现在你的部署中。应用程序使用的所有文件都应包含在应用程序中作为分发文件。wnavrhmk2#
尝试加载客户端本地属性文件。所以为
FileInputStream
应该有用!为的道路
oov.txt
您需要指定集群中工作计算机上的路径(不是客户端本地路径),即指定PATH_TO_OOV_FILE=/use/woker/node/path/oov.txt
在你的config.properties
文件。那么,conf.put("PATH_TO_OOV_FILE", prop.getProperty("PATH_TO_OOV_FILE"));
应该能正常工作。当然,你要确保
/use/woker/node/path/oov.txt
存在于执行拓扑的群集中的工作节点上。也可以将其指定为
conf.put("PATH_TO_OOV_FILE", "/user/worker/node/path/oov.txt");
First参数是键,不应更改,只应更改值。此外,使用
也没有道理。您需要为指定一个键
conf.put(<key>,<value>)
还有一把钥匙prop.getProperty(<key>)
. 你用的钥匙config.properties
是PATH_TO_OOV_FILE
,因此您需要将其用于prop.getProperty("PATH_TO_OOV_FILE")
.