java.lang.NoSuchMethodError: clojure.lang.KeywordLookupSite при запуске Leiningen - PullRequest
3 голосов
/ 09 декабря 2011

Я только что скачал Leiningen, но мне не удается его запустить.После загрузки собственного архива Jar скрипт завершается с ошибкой Java.Запустив bash -x lein, я вижу, что он зависает в этой строке:

+ exec java -Xbootclasspath/a:/home/andrea/.m2/repository/org/clojure/clojure/1.2.1/clojure-1.2.1.jar -client -Dleiningen.original.pwd=/home/andrea/bin -cp /home/andrea/.clojure/clojure.jar:::::test/:src/:resources/:/home/andrea/.lein/self-installs/leiningen-1.6.2-standalone.jar clojure.main -e '(use '\''leiningen.core)(-main)' /dev/null

, которая выдает:

Exception in thread "main" java.lang.RuntimeException: java.lang.NoSuchMethodError: clojure.lang.KeywordLookupSite.<init>(ILclojure/lang/Keyword;)V
at clojure.lang.Util.runtimeException(Util.java:165)
at clojure.lang.Compiler.eval(Compiler.java:6476)
at clojure.lang.Compiler.eval(Compiler.java:6431)
at clojure.core$eval.invoke(core.clj:2795)
at clojure.main$eval_opt.invoke(main.clj:296)

Интересно, что терпит неудачу не вызов Java, а фрагмент '(use '\''leiningen.core)(-main)'.Запуск этой строки без нее фактически запускает рабочий ответ REPL.Файл leiningen-1.6.2-standalone.jar, похоже, находится на правильном пути.Есть идеи?Я новичок в Java и Clojure ...

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Согласно ссылке [1], вам нужно добавить Clojure home к пути к классам.

echo "export CLOJURE_HOME=$HOME/Opt/clojure
export CLASSPATH=$CLASSPATH:$CLOJURE_HOME" >> $HOME/.profile

[1] http://myminutes.wordpress.com/2011/12/01/clojure-lein-gives-error-exception-in-thread-main-java-lang-runtimeexception-java-lang-nosuchmethoderror-clojure-lang-keywordlookupsite/

1 голос
/ 26 января 2012

Чуй Тей отвечает в правильном направлении. Однако, если у вас нет отдельной установки Clojure, а вместо этого используется только Leiningen для начальной загрузки ваших проектов, вам следует вместо этого добавить автономный JAR Leiningen в classpath.

Таким образом:

export CLASSPATH="$CLASSPATH:$HOME/.lein/self-installs/leiningen-VERSION-standalone.jar"
...