2016-07-15 122 views
0

我上傳了一個CSV文件,並且已經在Neo4j上定義了節點和關係。我試圖在一個基本上運行一個來自Spring的密碼查詢的例子上創建一個程序庫,它將生成neo4j的輸出。但是,我遇到此錯誤:運行從Spring到Neo4j的Cypher查詢

Exception in thread "main" java.lang.NoSuchMethodError:org.neo4j.graphdb.factory.GraphDatabaseFactory.newEmbeddedDatabase(Ljava/io/File;)Lorg/neo4j/graphdb/GraphDatabaseService; 
at org.neo4j.connection.Neo4j.run(Neo4j.java:43) 
at org.neo4j.connection.Neo4j.main(Neo4j.java:37) 

我想知道什麼可能是錯誤? 這裏是我的代碼:

public class Neo4j{ 
public enum NodeType implements Label{ 
    Issues, Cost, Reliability, Timeliness; 
} 
public enum RelationType implements RelationshipType{ 
    APPLIES_TO 
} 

String rows = ""; 
String nodeResult; 
String resultString; 
String columnString; 
private static File DB_PATH = new File("/Users/phaml1/Documents/Neo4j/default.graphdb/import/"); 

public static void main(String[] args){ 
    Neo4j test = new Neo4j(); 
    test.run(); 
} 
void run() 
{ 

    clear(); 
    GraphDatabaseService db = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH); 

    try(Transaction tx1 = db.beginTx(); 
      Result result = db.execute("MATCH(b:Business)-[:APPLIES_TO]->(e:Time) RETURN b,e")) 
    { 
     while(result.hasNext()) 
     { 
      while (result.hasNext()) 
      { 
       Map<String,Object> row = result.next(); 
       for (Entry<String,Object> column : row.entrySet()) 
       { 
        rows += column.getKey() + ": " + column.getValue() + "; "; 
       } 
       rows += "\n"; 
     } 
    } 

    try (Transaction something = db.beginTx(); 
      Result result1 = db.execute("MATCH(b:Business)-[:APPLIES_TO]->(e:Time) RETURN b,e")) 
    { 
     Iterator<Node> n_column = result.columnAs("n"); 
     for(Node node: Iterators.asIterable(n_column)) 
     { 
      nodeResult = node + ": " + node.getProperties("Description"); 
     } 
     List<String> columns = result.columns(); 
     columnString = columns.toString(); 
     resultString = db.execute("MATCH(b:Business)-[:APPLIES_TO]->(e:Time) RETURN b,e").resultAsString(); 
    } 

    db.shutdown(); 
    } 
} 

private void clear(){ 
    try{ 
     deleteRecursively(DB_PATH); 
    } 
    catch(IOException e){ 
     throw new RuntimeException(e); 
    } 
} 

}

回答

0

它看起來像一個Neo4j的版本衝突。

GraphDatabaseService db = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH); 

有一個字符串,如Neo4j的2倍(https://neo4j.com/api_docs/2.0.3/org/neo4j/graphdb/factory/GraphDatabaseFactory.html#newEmbeddedDatabase(java.lang.String)

的說法,但在Neo4j的3倍(http://neo4j.com/docs/java-reference/current/javadocs/org/neo4j/graphdb/factory/GraphDatabaseFactory.html#newEmbeddedDatabase-java.io.File-

文件

SDN在Neo4j的2.3.6可能拉動作爲dependency-請檢查您的依賴關係樹並覆蓋Neo4j版本