Leiningen和Clojure依赖关系

4

我对Clojure还比较陌生,但在网上寻找好的资源和示例时遇到了麻烦,希望有人能指点我。我已经用Lein开始了一个项目,project.clj看起来像这样:

(defproject scratch "1.0"
  :description ""
  :main scratch.core
  :dependencies [
    [org.clojure/clojure "1.3.0"]
    [org.clojars.jyaan/slick "247.1"]
  ])

并且src/scratch/core.clj看起来像这样:

(ns scratch.core 
    (:import org.newdawn.slick))    

(defn -main [] (println "hello world"))

据我所知,这是正确的,但当我尝试运行lein run时,我遇到了ClassNotFoundException。
我在lib/slick-247.1.jar文件上执行了jar tf,并确认它具有目录结构,表明它具有该命名空间(org/newdawn/slick/etc...)。我确定这是一个简单的错误,但我看不出来是什么问题,请问有人有什么想法吗?
1个回答

3

我认为问题在于您尝试导入整个包,就像Java中的“import org.newdawn.slick.*”。在Clojure中,您不能这样做,而是必须导入每个要使用的类。

最短的方式是:


```clojure (ns my-namespace (:require [org.newdawn.slick.class1 :as c1] [org.newdawn.slick.class2 :as c2])) ```
(:import (java.io BufferedReader Bits BufferedWriter))

话虽如此,您可以导入整个命名空间的函数。有没有适当的方法来执行*导入? - jayunit100

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接