嵌入式数据库不是从螺栓连接器开始的(neo4j 3.2.0)

时间:2017-05-16 18:26:23

标签: clojure neo4j embedded-resource connector bolts-framework

我正在尝试在clojure应用中创建和使用嵌入式Neo4j实例。根据{{​​3}}中的文档,我能够创建以下代码:

(defn make-embedded-db
[path]
(let [factory (GraphDatabaseFactory.)]
    (-> (.newEmbeddedDatabaseBuilder factory path)
        (.loadPropertiesFromFile "resources/neo4j.conf")
        (.newGraphDatabase))))

我正在导入以下库:

(:import [java.io ByteArrayInputStream ByteArrayOutputStream]
         [org.neo4j.graphdb Direction
                            GraphDatabaseService
                            Node
                            Relationship
                            RelationshipType
                            Transaction]
         [org.neo4j.graphdb.factory GraphDatabaseFactory])

我在conf文件中启用了bolt,如下所示:

dbms.connector.bolt.enabled=true

当我执行make-embedded-db函数时,出现以下错误:

  

CompilerException java.lang.RuntimeException:启动时出错   org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory,   / path / to / graphdb,编译:(form-init7747172741153885056.clj:1:9)

如果我在配置中禁用螺栓连接器 - 它似乎工作正常。我启用螺栓连接器的主要动机是我可以连接neo4j浏览器来可视化和探索graphdb。

我遇到了neo4j嵌入式早期版本的帖子,这些帖子有类似的问题,这些问题已通过使用已被弃用的Neo4j API guide解决。有没有人遇到这个问题并指出我正确的方向。

EDITED 将嵌入式数据库实例分配给像这样的全局变量

时,我收到了上述错误
(def db (make-embedded-db (io/file "resources/data/graphdb")))

然而只是调用函数本身,即

(make-embedded-db (io/file "resources/data/graphdb"))

给出了实际错误:

  

VerifyError类org.bouncycastle.asn1.x500.X500Name会覆盖final方法等于

1 个答案:

答案 0 :(得分:1)

基本上,快速谷歌的错误表明可能有多个路径包含在类路径中的bouncycastle - 检查graphdb文件夹中的debug.log实际上确认了这一点。我在同一个项目中包括了incanter,并且还添加了它自己的bouncycastle路径,因此导致了这个问题。删除它解决了这个问题。