2013-06-21 45 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和它的工作。不明白,但很高兴完成。