2010-07-17 182 views
0

我正在关注“编程Clojure”一书中的示例,并且我在页面 17上运行(需要'example.introduction)。如何在Mac OS X上运行clojure?

我在〜/斌/设置的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 ' 

但它不具备CLASSPATH我在安装正确的.bashrc,当我运行the command如下。

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

什么可能是错误的?

+1

为所有,但最琐碎的实验,这是最好的习惯[Leiningen](http://leiningen.org)。当我开始时,我了解到这是艰难的方式。 – Mars 2015-08-18 03:06:04

回答

2

最简单的方法是使用附带的书斯图尔特哈洛韦代码:

  1. 从GitHub克隆斯图代码:$ git clone http://github.com/stuarthalloway/programming-clojure.git
  2. cd到所创建的programming-clojure目录:$ cd programming-clojure
  3. 运行repl.sh脚本在bin/目录中:$ ./bin/repl.sh(请确保您从回购根目录运行它,而不是bin/目录,否则它将不起作用)。

该脚本将设置所有必要的路径,包括书中示例的路径。

(你可以做手工,当然,但无论如何,你必须下载或反正克隆programming-clojure源代码示例的工作。)