2010-07-17 10 views
0

Je suis les exemples du livre 'Programming Clojure', et je suis à la page 17 pour exécuter (require 'example.introduction).Comment lancer clojure sur Mac OS X?

J'ai mis clojure à ~/bin/clojure comme suit

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

Le -cp contient. (répertoire actuel). Quand je l'essaye avec clojure, j'obtiens le message d'erreur suivant.

 
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 

J'ai essayé d'exécuter clojure comme suit.

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

Mais il n'a pas le CLASSPATH cette configuration je correctement dans .bashrc, quand je lance the command comme suit.

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

Qu'est-ce qui pourrait ne pas fonctionner?

+1

Pour tous, mais l'expérimentation la plus triviale, il est préférable s'habituer à [Leiningen] (http://leiningen.org). J'ai appris ça à la dure quand j'ai commencé. – Mars

Répondre

2

La façon la plus simple est d'utiliser le code de Stuart Halloway qui accompagne le livre:

  1. code de Clone Stu de GitHub: $ git clone http://github.com/stuarthalloway/programming-clojure.git
  2. cd dans le répertoire programming-clojure qui a été créé: $ cd programming-clojure
  3. Exécutez le repl.sh script dans le répertoire bin/: $ ./bin/repl.sh (assurez-vous de l'exécuter à partir de la racine du dépôt, pas le répertoire bin/, sinon cela ne fonctionnera pas).

Le script mettra en place tous les chemins nécessaires, y compris les chemins d'accès aux exemples du livre.

(Vous pouvez le faire manuellement, bien sûr, mais en tout cas, vous devez télécharger ou cloner le code source programming-clojure de toute façon pour les exemples de travail.)