2013-04-05 69 views
0

嗨,我嘗試使用運行查詢如下:圖數據庫API如何處理的Neo4j記錄

Exception in thread "main" java.lang.NoClassDefFoundError: scala/Function0

final GraphDatabaseService graphDatabaseService = new EmbeddedGraphDatabase("http://localhost:7474/db/data"); 
ExecutionEngine engine = new ExecutionEngine(graphDatabaseService,StringLogger.DEV_NULL); 
ExecutionResult result = engine.execute("START n=node(0) RETURN n"); 

然而,一個例外是在executiong的時碼發射你能否告訴我如何解決這個問題,任何人都曾經有過這樣的問題?

謝謝。

+0

嵌入式圖形數據庫不與遠程URL工作,使用類似http://github.com/neo4j/java-休息結合,例如'新的RestGraphDatabase(「http:// localhost:7474/db/data」).query(query,params)' – 2013-04-09 07:13:39

回答

0
<dependency> 
    <groupId>org.neo4j</groupId> 
    <artifactId>neo4j-rest-graphdb</artifactId> 
    <version>1.9.M04</version> 
</dependency> 

然後用它在你的java代碼是這樣的:

import org.neo4j.rest.graphdb.RestAPI; 
import org.neo4j.rest.graphdb.RestAPIFacade; 
import org.neo4j.rest.graphdb.query.RestCypherQueryEngine; 
import org.neo4j.rest.graphdb.util.QueryResult; 

import java.util.Map; 

import static org.neo4j.helpers.collection.MapUtil.map; 

public class RestApiTest { 
    public static void main(String[] args) { 
     final RestAPI api = new RestAPIFacade("http://localhost:7474/db/data"); 
     final RestCypherQueryEngine engine = new RestCypherQueryEngine(api); 
     final QueryResult<Map<String,Object>> result = engine.query("start n=node({id}) return n.name, id(n) as id", map("id", 0)); 
     for (Map<String, Object> row : result) { 
      long id=((Number)row.get("id")).longValue(); 
      String name= (String) row.get("n.name"); 
     } 
    } 
} 
+0

這會起作用,但是當你使用其餘的API時,你可能只需要使用Core API來做這些東西你需要這樣做。使用嵌入式數據庫,核心API的使用比Cypher快得多,所以我期望從其他API獲得相同的結果,儘管我還沒有測試過它。另外,我不確定,但我認爲RestAPI類沒有與GraphDatabaseService相同的功能,而GraphDatabaseService也是RestAPIFacade的接口。我傾向於使用後者。 – 2013-04-10 08:56:39