Как запустить Clojure в Mac OS X? - PullRequest
0 голосов
/ 17 июля 2010

Я следую примерам из книги «Программирование Clojure», и я на странице 17 для запуска (требуется 'example.introduction).

Я установил clojure в ~ / bin / 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, когда я запускаю команду следующим образом.

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

Что может быть не так?

1 Ответ

2 голосов
/ 17 июля 2010

Самый простой способ - использовать код Стюарта Хэллоуэя, который сопровождает книгу:

  1. Код Clone 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 (убедитесь, что вы запускаете его из корня репозитория, а не из каталога bin/, иначе он не будет работать).

Скрипт установит все необходимые пути, включая пути к примерам в книге.

(Конечно, вы можете сделать это вручную, но, во всяком случае, вам все равно придется скачать или клонировать исходный код programming-clojure, чтобы примеры работали.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...