1

我有一个关于部署到 Clojars 的基本问题。我编写了一个库并将其部署到 Clojars,但是当我尝试要求它时,我收到了 java.lang.ClassNotFoundException。

这是我的要求:

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

这是在 Clojars 上的位置:

https://clojars.org/interval-trees

我想也许我在组或工件 id 方面遗漏了一些东西,我不确定。我会很感激帮助解决这个问题。谢谢!

我测试它的方式是在一个名为间隔树测试的新 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)

现在当我运行 lein 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] )
4

2 回答 2

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会帮助你解决这个问题。

于 2013-06-21T04:13:31.790 回答
0

我在区间树中的所有 .clj 中都撒了 :gen-class 并且它起作用了。不明白,但很高兴它完成了。

于 2013-06-21T03:07:00.460 回答