0

我正在尝试在 clojure 应用程序中创建和使用嵌入式 Neo4j 实例。按照Neo4j API guide中的文档,我能够创建以下代码:

(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文件中启用了螺栓,如下所示:

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)

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

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

已编辑 将嵌入式数据库实例分配给这样的全局变量时出现上述错误

(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 方法等于

4

1 回答 1

1

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

于 2017-05-26T16:15:30.237 回答