:在lein项目中使用失败

时间:2013-09-18 03:44:44

标签: clojure namespaces leiningen

当我尝试使用

   (ns eight-puzzle.core
      (:use [clojure.contrib.seq :only (positions)]))

我收到此错误

java.io.FileNotFoundException: Could not locate clojure/contrib/seq__init.class or        clojure/contrib/seq.clj on classpath: 
          RT.java:443 clojure.lang.RT.load
          RT.java:411 clojure.lang.RT.load
        core.clj:5530 clojure.core/load[fn]
        core.clj:5529 clojure.core/load
      RestFn.java:408 clojure.lang.RestFn.invoke
        core.clj:5336 clojure.core/load-one
        core.clj:5375 clojure.core/load-lib[fn]
        core.clj:5374 clojure.core/load-lib
      RestFn.java:142 clojure.lang.RestFn.applyTo
         core.clj:619 clojure.core/apply
        core.clj:5413 clojure.core/load-libs
      RestFn.java:137 clojure.lang.RestFn.applyTo
         core.clj:621 clojure.core/apply
        core.clj:5507 clojure.core/use
      RestFn.java:408 clojure.lang.RestFn.invoke
     NO_SOURCE_FILE:1 eight-puzzle.core/eval8699[fn]
     NO_SOURCE_FILE:1 eight-puzzle.core/eval8699

当我尝试导入任何内容时会发生这个问题。设置clojure时我做错了吗?

1 个答案:

答案 0 :(得分:3)

对于Leiningen管理的项目,外部依赖关系应在project.clj文件的:dependencies密钥下指定。

(defproject project1 "0.0.1"
  :description "Something"
  :dependencies [[org.clojure/clojure "1.5.1"]
                 [org.clojure/clojure-contrib "1.2.0"]
                 [clj-time "0.6.0"]])

注意: :dependencies中的条目可以来自maven(maven central repository)或Clojars

看起来您正在使用clojure.contrib。此库已被弃用,如果可以,您应该upgrade。如果您仅使用clojure.contrib.seq/positions,请查看此StackOverflow answer。您也可以使用clojure.core函数重新实现它:

(defn positions [pred coll]
  (for [[idx elt]
        (map-indexed vector coll)
        :when (pred elt)]
    idx))