2017-09-24 1 views
1

내가는 Clojure의 중첩 된 클래스

String json = ... 
VPackParser parser = new VPackParser.Builder().build(); 
VPackSlice slice = parser.fromJson(json); 

의 (예제 페이지에 주어진)은 기본적으로 형태를 갖는다 here

내가 그 알고 코드에 대한 래퍼 함수의 몇 가지를 쓰기 위해 노력하고 있어요 가져 오기 내부 클래스를 가져 오려면 $을 사용하지만 다음의 모든 조합은 작동하지 않는 것 같습니다.

(ns the.pain.is.real 
    (:require [clojure.reflect :as r]) 
    (:import 
    com.arangodb.velocypack.VPackBuilder ;; fine 
    com.arangodb.velocypack.VPackSlice ;; fine 
    com.arangodb.velocypack.VPackParser ;; fine 
    com.arangodb.velocypack.VPack ;; fine 
    com.arangodb.velocypack.VPackParser$Builder ;; nope 
)) 

나는 단지 Unhandled java.lang.ClassNotFoundException을 얻습니다.

(ns winning 
    (:import com.arangodb.ArangoDB$Builder)) 
(.build (-> (new ArangoDB$Builder) 
      (.host "127.0.0.1" 8529) 
      (.user username) 
      (.password password))) 

어떤 아이디어 :

내가 사용하는 작업을 얻었다했던 일부 유사한 코드로 근무했다?

com/arangodb/velocypack/VPackParser$Builder.class

이 단지 시행 착오가 보여 않는 jar 파일을보고?

+0

jar 파일을 보면 클래스 파일의 정확한 이름을 볼 수 있습니다. 아마도 VPackParser $ Builder가 없을 것입니다. –

+0

@ChrisMurphy - 좋습니다. 그래서'''com/arangodb/velocypack/VPackBuilder $ 8.class라는 클래스가 20 개 정도있는 것처럼 보입니다. com/arangodb/velocypack/VPackBuilder $ 9.class ...''' – beoliver

+0

@ChrisMurphy -하지만 보았습니다. 잘못된 것입니다 : (네, 거기에 하나의'com/arangodb/velocypack/VPackParser $ Builder.class' – beoliver

답변

2

내 질문에 답해주세요.

lein deps을 사용할 때 두 버전이 다운로드 된 것처럼 보입니다. [com.arangodb/velocypack "1.0.0"] 만 프로젝트 파일에 있었지만 1.0.01.0.10은 모두 .m2 디렉토리에있었습니다. com/arangodb/velocypack/VPackParser$Builder.class 클래스는 1.0.10 버전에만 있습니다.

프로젝트 파일을 [com.arangodb/velocypack "1.0.10"]으로 변경하면 가져 오기 작업이 수행됩니다.