2017-05-16 58 views
0

我想在clojure应用程序中创建和使用嵌入式Neo4j实例。继Neo4j API guide的文档,我能够创建下面的代码:嵌入式数据库不以螺栓连接器开始(neo4j 3.2.0)

(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: Error starting org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory, /path/to/graphdb, compiling:(form-init7747172741153885056.clj:1:9)

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

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

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

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

不过只是调用函数我得到上述错误本身即

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

给实际错误:

VerifyError class org.bouncycastle.asn1.x500.X500Name overrides final method equals

回答

1

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