2017-09-24 2 views
1

Ich versuche, ein paar Wrapper-Funktionen für den Code zu schreiben hereImport Clojure verschachtelte Klassen

es im Grunde die Form (wie im Beispiel Seite angegeben) von

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

ich weiß, dass Um innere Klassen zu importieren, benutzt man $, aber jede Kombination der folgenden scheint nicht zu funktionieren.

(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 
)) 

Ich bekomme nur eine..

hatte ich mit einem ähnlichen Code gearbeitet, die ich bekommen hatte arbeiten mit: Irgendwelche Ideen

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

?

in der JAR-Datei suchen

besagen

com/arangodb/velocypack/VPackParser$Builder.class

Ist es nur Versuch und Irrtum?

+0

Wenn Sie in die JAR-Datei schauen, sollten Sie in der Lage sein, die genauen Namen der Klassendateien zu sehen. Vielleicht finden Sie dort keinen 'VPackParser $ Builder'. –

+0

@ChrisMurphy - ok. Es sieht also so aus, als gäbe es etwa 20 Klassen namens '' '' com/arangodb/velocypack/VPackBuilder $ 8.class com/arangodb/velocypack/VPackBuilder $ 9.class ... '' ' – beoliver

+0

@ChrisMurphy - aber ich schaute das Falsche :(- Ja, es gibt einen 'com/arangodb/velocypack/VPackParser $ Builder.class' – beoliver

Antwort

2

Beantworten meiner eigenen Frage.

Es scheint, dass zwei Versionen heruntergeladen wurden, wenn lein deps verwendet wurde. Obwohl nur [com.arangodb/velocypack "1.0.0"] in der Projektdatei war, waren sowohl 1.0.0 als auch 1.0.10 in der .m2 dir. Die Klasse com/arangodb/velocypack/VPackParser$Builder.class ist nur in der Version 1.0.10 zu finden.

Nach dem Ändern der Projektdatei auf [com.arangodb/velocypack "1.0.10"] funktioniert der Import.