2013-06-21 70 views
1

我有一個關於部署到Clojars的基本問題。我寫了一個庫並將其部署到Clojars,但是當我嘗試需要它時,我收到一個java.lang.ClassNotFoundException。Clojure:部署在Clojars之後需要

這是我如何我需要它:

https://github.com/mobiusinversion/interval-trees

這裏是它是Clojars:

https://clojars.org/interval-trees

我想也許我缺少關於組的東西或神器ID,我不確定。我希望能有這樣的幫助。謝謝!

我測試這個的方法是在一個名爲interval-tree-test的新lein項目中。這是我該測試project.clj:

(defproject interval-tree-test "0.1.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :license {:name "Eclipse Public License" 
     :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :dependencies [[org.clojure/clojure "1.5.1"] 
       [interval-trees "0.2.3"]] 
    :main interval-tree-test.core) 

現在,當我運行雷音DEPS我得到

$ lein deps 
Retrieving interval-trees/interval-trees/0.2.3/interval-trees-0.2.3.pom from clojars 
Retrieving interval-trees/interval-trees/0.2.3/interval-trees-0.2.3.jar from clojars 

在我的目錄中的.m2果然

$ ls ~/.m2/repository/interval-trees/interval-trees/0.2.3/ 
interval-trees-0.2.3.jar.sha1 interval-trees-0.2.3.pom.sha1 
interval-trees-0.2.3.jar   interval-trees-0.2.3.pom 

最後,在我的core.clj

(ns interval-tree-test.core 
    (:gen-class) 
    (:require [interval-trees.interval-tree :as it])) 

    (defn -main [& args]) 

回答

2

您的require表單是錯誤的。有兩種方法來解決這個問題:

  • 您可以將:require形式搬進ns形式:

    (ns interval-tree-test.core 
        (:require [interval-trees.interval-tree :as it]))) 
    
  • 可以使用require功能來做到這一點沒有ns形式:

    (require '[interval-trees.interval-tree :as it])) ;; note the quote 
    

我不知道爲什麼/如何使用:gen-class可以幫助你解決這個問題。

+0

嘿,謝謝你的擡頭。我在註釋和代碼中解決了這個問題。出於某種原因,解決方案出現在向項目中的所有名稱空間添加(:gen-class)標誌時。我需要了解更多關於thwy的信息。乾杯。 –

0

我灑led:在所有我的.clj中間隔樹的gen-class和它的工作。不明白,但很高興完成。