2017-05-16 19 views
0

clojure app에 내장 된 Neo4j 인스턴스를 생성하여 사용하려고합니다.임베디드 db가 볼트 커넥터로 시작되지 않음 (neo4j 3.2.0)

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

나는 다음과 같은 라이브러리를 가져입니다 : 내가 볼트의 conf 파일 설정을 On으로

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

다음과 같이

dbms.connector.bolt.enabled=true 
Neo4j API guide의 문서에 따라, 나는 다음과 같은 코드를 만들 수 있었다

make-embedded-db 함수를 실행하면 다음 오류가 발생합니다.

CompilerException java.lang.RuntimeException: Error starting org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory, /path/to/graphdb, compiling:(form-init7747172741153885056.clj:1:9)

구성에서 볼트 커넥터를 비활성화하면 제대로 작동하는 것 같습니다. 볼트 커넥터를 사용하는 주된 동기는 네오 브라우저를 연결하여 graphdb를 시각화하고 탐색 할 수 있다는 것입니다.

내 생각에는 neo4j의 이전 버전에 대한 게시물이 있는데, 이는 WrappingNeoServerBootStrapper을 사용하여 해결 된 비슷한 문제를 가지고 있습니다.이 게시물은 더 이상 사용되지 않습니다. 누구든지이 문제에 직면하고 올바른 방향으로 나를 가리키고 있습니다.

그러나 단지 함수를 호출이

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

같은 글로벌 VAR에 포함 된 DB 인스턴스를 할당 할 때 나는 위의 오류가 발생했다 자체가, 즉 편집을 할

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

은 실제했다 오류 :

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

답변

1

기본적으로 오류의 빠른 google은 classpath에 포함 된 bouncycastle에 대한 여러 경로가있을 수 있음을 제안했습니다. 실제로 graphdb 폴더의 debug.log를 확인하면이를 확인했습니다. 나는 같은 프로젝트에서 incanter를 포함하고 있었고, 또한 그것이이 문제를 야기하는 bouncycastle을위한 자신의 길이라고 덧붙였다. 제거하면 문제가 해결되었습니다.