如何在Mac OS X上运行clojure?

时间:2010-07-17 05:19:54

标签: clojure

我正在关注“Programming Clojure”一书中的例子,而且我在页面上 17运行(要求'example.introduction)。

我在〜/ bin / clojure中设置了clojure,如下所示

java -server \
     -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888 -cp ... clojure.lang.Repl

-cp包含。 (当前目录)。当我尝试使用clojure时,我收到以下错误消息。

Exception in thread "main" java.lang.ExceptionInInitializerError
        at clojure.lang.Repl.(Repl.java:23)
Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodError: clojure.lang.MultiFn.(Ljava/lang/String;Lclojure/lang/IFn;Ljava/lang/Object;Lclojure/lang/IRef;)V (utils.clj:0)
        at clojure.lang.RT.(RT.java:290)
        ... 1 more
Caused by: java.lang.NoSuchMethodError: clojure.lang.MultiFn.(Ljava/lang/String;Lclojure/lang/IFn;Ljava/lang/Object;Lclojure/lang/IRef;)V (utils.clj:0)
        at clojure.lang.Compiler.eval(Compiler.java:4153)
        at clojure.lang.Compiler.load(Compiler.java:4470)
        at clojure.lang.RT.loadResourceScript(RT.java:327)
        at clojure.lang.RT.loadResourceScript(RT.java:316)
        at clojure.lang.RT.load(RT.java:406)
        at clojure.lang.RT.load(RT.java:376)
        at clojure.core$load__4557$fn__4559.invoke(core.clj:3427)
        at clojure.core$load__4557.doInvoke(core.clj:3426)
        at clojure.lang.RestFn.invoke(RestFn.java:413)
        at clojure.core$load_one__4520.invoke(core.clj:3271)
...
        at clojure.lang.RT.loadResourceScript(RT.java:327)
        at clojure.lang.RT.loadResourceScript(RT.java:312)
        at clojure.lang.RT.maybeLoadResourceScript(RT.java:308)
        at clojure.lang.RT.doInit(RT.java:430)
        at clojure.lang.RT.(RT.java:286)
        ... 1 more
Caused by: java.lang.NoSuchMethodError: clojure.lang.MultiFn.(Ljava/lang/String;Lclojure/lang/IFn;Ljava/lang/Object;Lclojure/lang/IRef;)V
        at clojure.contrib.duck_streams__init.load(Unknown Source)
        at clojure.contrib.duck_streams__init.(Unknown Source)
...
        at clojure.lang.Compiler.eval(Compiler.java:4142)
        ... 28 more

我尝试按如下方式运行clojure。

alias clojure='java -jar $JARDIR/clojure.jar ' 

但是当我按照以下方式运行the command时,它没有正确设置.bashrc中的CLASSPATH。

(println (seq (.getURLs (java.lang.ClassLoader/getSystemClassLoader))))

可能出现什么问题?

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用本书附带的Stuart Halloway代码:

  1. 克隆Stu的代码来自GitHub:$ git clone http://github.com/stuarthalloway/programming-clojure.git
  2. cd到已创建的programming-clojure目录:$ cd programming-clojure
  3. 运行repl.sh目录中的bin/脚本:$ ./bin/repl.sh(确保从repo root运行它,而不是bin/目录,否则它不会工作)。
  4. 该脚本将设置所有必要的路径,包括书中示例的路径。

    (当然,您可以手动执行此操作,但无论如何,您必须下载或克隆programming-clojure源代码才能使示例正常工作。)