2013-11-28 39 views
0

好。我試圖在由Leiningen提供的Clojure REPL中使用twitter4j。我已指定twitter4j作爲版本依賴關係:Clojure的REPL導入故障排除

(defproject testproject "0.1.0-SNAPSHOT" 
    :description "Tryin stuff" 
    :repositories { 
       "twitter4j" "http://twitter4j.org/maven2" 
       } 
    :dependencies [[org.clojure/clojure "1.5.1"] 
       [compojure "1.1.6"] 
       [org.twitter4j/twitter4j-core "3.0.5"] 
       [org.twitter4j/twitter4j-stream "3.0.5"]] 
    :plugins [[lein-ring "0.8.8"]] 
    :ring {:handler testproject.core/app} 
    :profiles {:dev 
      {:dependencies [[javax.servlet/servlet-api "2.5"] 
         [ring-mock "0.1.5"]]}}) 

到目前爲止,這麼好。 lein deps將所有內容都下載到~/.m2的默認回購中。真棒。我火了REPL,我得到這個也只有這個:

user=> (import '(org.twitter4j.conf ConfigurationBuilder)) 

ClassNotFoundException org.twitter4j.conf.ConfigurationBuilder java.net.URLClassLoader$1.run (URLClassLoader.java:202) 

twitter4j罐子都存在,佔在~/.m2/org/twitter4j/twitter4j-core/3.0.5/。有沒有...我沒有得到關於導入Java類的內容?我需要提供一些額外的配置?

回答

2

試試這個(正確的包名):

user=> (import '(twitter4j.conf ConfigurationBuilder)) 
+0

神該死。另外,謝謝。另外,該死的。 :-P – Gastove

+0

好的,真正的問題:在Clojure中是否能夠從包地址中刪除'com/org'是標準的?在Java/Scala中,我會使用org.twitter4j.whathaveyou - 而不是Clojure中的? – Gastove

+0

鑑於twitter4j是一個Java(而不是Clojure)庫,我會說這不僅限於Clojure。我已經看到了Clojure的兩種方式(帶和不帶反向域前綴)。 –