2016-07-21 158 views
0

我試圖讓ETL加載器在OSX機器(10.11.6)上的OrientDB 2.2.5上工作,但我不斷收到輸入JSON文件上的FileNotFoundException。 。ETL加載器拋出FileNotFoundException:加載json文件時出錯

我要去看看example,它可以在post.csv和post.json文件的教程中找到。我修改它們以刪除路徑,因爲這些路徑與我自己的路徑結構不一致。

這裏是我的post.csv:

id,title 
10,NoSQL movement 
20,New Orientdb 

的post.json文件:

​​

我有環境變量ORIENTDB_HOME設置的位置,其中orientdb-社區2.2.4 ,$ ORIENTDB_HOME/bin在我的路徑中。

如果我輸入以下內容:

$ oetl.sh post.json 

輸出是這樣的:

OrientDB etl v.2.2.4 (build [email protected]; 2016-07-08 12:30:59+0000) www.orientdb.com 
Exception in thread "main" com.orientechnologies.orient.core.exception.OConfigurationException: Error on loading config file: post.json 
    at com.orientechnologies.orient.etl.OETLProcessor.parseConfigAndParameters(OETLProcessor.java:131) 
    at com.orientechnologies.orient.etl.OETLProcessor.main(OETLProcessor.java:108) 
Caused by: java.io.FileNotFoundException: post.json (No such file or directory) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:138) 
    at com.orientechnologies.common.io.OIOUtils.readFileAsString(OIOUtils.java:140) 
    at com.orientechnologies.orient.etl.OETLProcessor.parseConfigAndParameters(OETLProcessor.java:120) 
    ... 1 more 

我不知道正確的解決辦法是什麼?我的問題似乎類似於另一previously asked question,但由於我在任何路徑中都沒有空格,所以對此的解決方法並不適用於我。我試過在配置文件中設置絕對路徑,但這並沒有改變任何東西。

我從我的posts.json和posts.csv文件所在的目錄運行oetl.sh,但它似乎仍然無法找到posts.json。

更新:兩個文件(posts.json,posts.csv)共同位於同一目錄中。我已經嘗試運行oetl.sh以及只是oetl.sh posts.json,但異常不斷髮生。我也嘗試編輯posts.json,以便它也有完整的絕對路徑,並且不會改變結果。

任何幫助將不勝感激......我認爲這可能是某種java配置問題,但我對Java相對較新,所以我可能錯過了一些環境變量或什麼?

+0

你的post.json位於何處?除了例外情況外,問題肯定在某種程度上。 –

+0

嘗試使用絕對路徑,例如/User/myname/adirectory/input.csv –

回答

0

我想我已經解決了......爲歸檔目的添加答案。

我在我的PATH中有orientdb-community-2.2.4/bin目錄,並試圖從包含我的post.json和post.csv的目錄運行。

是oetl.sh腳本的第一件事就是改變其工作目錄以腳本的位置:

#!/bin/sh 
# 
# Copyright (c) 2014 Luca Garulli 
# 

#set current working directory 
cd `dirname $0` 

... 

所以,當oetl.sh執行實際的Java代碼,它使用的工作目錄$ ORIENTDB_HOME /箱,而而不是來自用戶外殼的當前工作目錄。這意味着post.json文件必須在命令行上用其絕對路徑指定。另外,post.json文件中列出的post.csv文件也需要有其絕對路徑。

我可以註釋掉cd dirname $0行並且該腳本可以正常工作,所以我不確定該行在腳本中的價值。/shrug