尝试运行neo4j教程,得到错误:错误:找不到适合运行的方法(字符串,映射<字符串,列表>)



我只是在学习如何使用neo4j。我上了他们的网站,看到了他们的一个教程。在该网站上,如果向下滚动,您会看到他们的"带有Cypher的测试驱动器NEO4J"部分,默认一个(" Social")有一个"朋友之友"示例。此外,它们还有一些代码示例。我单击了" Java",并看到了Social.java程序的示例。他们的说明有四个部分:

  1. 下载neo4j驱动程序(他们提供链接,我下载了那个罐子)
  2. 将代码和粘贴代码复制到Social.java
  3. javac -cp neo4j-java-driver-1.0.0.jar Social.java
  4. 编译
  5. 使用java -cp neo4j-java-driver-1.0.0.jar:. Social
  6. 运行

不幸的是,步骤(3)失败。尝试编译后,我会收到以下错误:

javac -cp neo4j-java-driver-1.0.0.jar Social.java  Social.java:25: error: no suitable method found for run(String,Map<String,List>)
        session.run(insertQuery,singletonMap("pairs",data)).consume();
               ^
method StatementRunner.run(Statement) is not applicable
  (actual and formal argument lists differ in length)
method StatementRunner.run(String) is not applicable
  (actual and formal argument lists differ in length)
method StatementRunner.run(String,Record) is not applicable
  (actual argument Map<String,List> cannot be converted to Record by method invocation conversion)
method StatementRunner.run(String,Map<String,Object>) is not applicable
  (actual argument Map<String,List> cannot be converted to Map<String,Object> by method invocation conversion)
method StatementRunner.run(String,Value) is not applicable
  (actual argument Map<String,List> cannot be converted to Value by method invocation conversion) 1 error

我不确定如何修复它,因为我不知道run方法的详细信息,并且我认为这是一个有四个简单步骤的教程,因此所有阶段都应该正确地工作。我的javac版本是1.7,如果很重要。

我很明显吗?

在他们使用的代码中:

session.run(insertQuery,singletonMap("pairs",data)).consume();

用:

替换它
Map<String, Object> parameters = new HashMap<>();
parameters.put("pairs", data);
session.run(insertQuery,parameters).consume();

感谢您的报告,示例中看起来像是一个错误。您可以自己创建一个hashmap,而不是使用引起问题的singletonMap:

Map<String, Object> parameters = new HashMap<>();
parameters.put("pairs", data);
session.run(insertQuery,parameters).consume();