2016-07-21 51 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