[英]java.io.FileNotFoundException while submitting
我導入的項目在代碼中有兩個文件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
,,,,我應該用我擁有的真實路徑替換此路徑還是讓它們
您嘗試加載客戶端本地屬性文件。 因此,為FileInputStream
指定絕對路徑應該可行!
對於oov.txt
的路徑,您需要在集群中的工作計算機上指定路徑(而不是客戶端本地路徑),即在config.properties
指定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");
第一個參數是關鍵 ,不應更改-只能更改值。
此外,使用
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.properties
使用的密鑰是PATH_TO_OOV_FILE
,因此您需要將其用於prop.getProperty("PATH_TO_OOV_FILE")
。
目錄/home/user/workspace/imported-project/
在您的部署中將不存在。 應用程序使用的文件應全部以分發的形式包含在應用程序中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.