提交时发生java.io.filenotfoundexception

3j86kqsm  于 2021-06-21  发布在  Storm
关注(0)|答案(2)|浏览(344)

我导入的项目在代码中有两个文件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

,,,,,我应该用我拥有的真实路径替换这些路径还是让它们

zujrkrfu

zujrkrfu1#

目录 /home/user/workspace/imported-project/ 不会出现在你的部署中。应用程序使用的所有文件都应包含在应用程序中作为分发文件。

wnavrhmk

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("/home/user/workspace/imported-project/oov.txt", prop.getProperty("/home/user/workspace/imported-project/oov.txt"));

也没有道理。您需要为指定一个键 conf.put(<key>,<value>) 还有一把钥匙 prop.getProperty(<key>) . 你用的钥匙 config.propertiesPATH_TO_OOV_FILE ,因此您需要将其用于 prop.getProperty("PATH_TO_OOV_FILE") .

相关问题