leiningen не работает на OS X - PullRequest
       10

leiningen не работает на OS X

2 голосов
/ 03 ноября 2011

Когда я пытаюсь запустить leiningen на моем компьютере, я получаю сообщение об ошибке ниже.Установка выполняется в соответствии с инструкциями на github (README).Кто-нибудь может дать мне подсказку по этому поводу?

Единственное возможное решение, которое я нашел через google, - это запустить lein clean, но мне не удается выполнить подобное сообщение.

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)
at clojure.main$initialize.invoke(main.clj:315)
at clojure.main$script_opt.invoke(main.clj:339)
at clojure.main$main.doInvoke(main.clj:426)
at clojure.lang.RestFn.invoke(RestFn.java:436)
at clojure.lang.Var.invoke(Var.java:409)
at clojure.lang.AFn.applyToHelper(AFn.java:167)
at clojure.lang.Var.applyTo(Var.java:518)
at clojure.main.main(main.java:37)
Caused by: java.lang.NoSuchMethodError: clojure.lang.KeywordLookupSite.<init>(ILclojure/lang/Keyword;)V
at leiningen.util.paths$legacy_native_path.<clinit>(paths.clj:32)
at leiningen.util.paths__init.load(Unknown Source)
at leiningen.util.paths__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at clojure.lang.RT.loadClassForName(RT.java:2030)
at clojure.lang.RT.load(RT.java:417)
at clojure.lang.RT.load(RT.java:398)
at clojure.core$load$fn__4610.invoke(core.clj:5386)
at clojure.core$load.doInvoke(core.clj:5385)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5200)
at clojure.core$load_lib.doInvoke(core.clj:5237)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:602)
at clojure.core$load_libs.doInvoke(core.clj:5271)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:602)
at clojure.core$require.doInvoke(core.clj:5352)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at leiningen.core$loading__4414__auto__.invoke(core.clj:1)
at leiningen.core__init.load(Unknown Source)
at leiningen.core__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at clojure.lang.RT.loadClassForName(RT.java:2030)
at clojure.lang.RT.load(RT.java:417)
at clojure.lang.RT.load(RT.java:398)
at clojure.core$load$fn__4610.invoke(core.clj:5386)
at clojure.core$load.doInvoke(core.clj:5385)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5200)
at clojure.core$load_lib.doInvoke(core.clj:5237)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:602)
at clojure.core$load_libs.doInvoke(core.clj:5271)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:604)
at clojure.core$use.doInvoke(core.clj:5363)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at user$eval1.invoke(NO_SOURCE_FILE:1)
at clojure.lang.Compiler.eval(Compiler.java:6465)
... 11 more

Ответы [ 5 ]

1 голос
/ 03 января 2013

Вот отличный способ быстро определить, есть ли у вас зависимости, использующие другую версию Clojure:

lein deps :tree | grep -C 1 "org\.clojure\/clojure"
1 голос
/ 05 января 2012

Я согласен с cieplak - у меня возникла та же проблема, lein зависит от Clojure 1.2.1, и созданный им файл проекта по умолчанию сделал мой новый проект зависимым от Clojure 1.3.0. Когда я запустил 'lein test', чтобы запустить тесты для нового проекта, Clojure 1.3.0 был загружен и добавлен в classpath, а затем у меня была ошибка, о которой вы говорите выше.

Решение - Удалите все загруженные файлы jar в моем новом проекте (в 'libs'), измените файл project.clj в зависимости от Clojure 1.2.1 для соответствия lein и повторно запустите 'lein test', чтобы скачать зависимости. На этот раз нет столкновения версий Clojure и ошибок:)

Исправление - Это работает, только если вы делаете это перед каждым запуском 'lein test' :(: (

Обновление - я исправил свою проблему, убедившись, что все зависимости в моем проекте используют одну и ту же версию Clojure - 1.2.1. Основными зависимостями являются Midje, поэтому я использую 1.2.0 этого (который использует 1.2.1 Clojure) и, конечно, сам Leiningen в версии 1.6.2, который также использует Clojure 1.2.1. Не идеальная ситуация, но, по крайней мере, она работает последовательно, без необходимости удаления всех зависимых библиотек!

0 голосов
/ 29 мая 2012

Во всех случаях исключение java.lang.NoSuchMethodError: clojure.lang.KeywordLookupSite.<init>(ILclojure/lang/Keyword;)V означает, что вы пытаетесь запустить код, скомпилированный с использованием clojure 1.2, с использованием clojure 1.3.

Что здесь происходит, у вас есть dev-зависимость, которая вытягивает clojure 1.3в lib / dev.Все файлы в lib / dev добавляются в путь к классам.Leiningen содержит код, скомпилированный для clojure 1.2, и вы получите исключение.

Решение: выяснить, какая dev-зависимость зависит от clojure, и исключить его.Это будет выглядеть как [foo "1.2.0" :exclusions [org.clojure/clojure]]

Как вы выясните, какой dev-dep?Метод проб и ошибок или, взглянув на их файл project.clj в их исходном коде.

0 голосов
/ 16 ноября 2011

У меня такая же проблема на данный момент.Я только что установил Incanter, используя Lein.Я исправил это, удалив ~ / .lein / plugins / incanter-1.3.0-SNAPSHOT.jar.

Из того, что я могу сказать, ошибка вызвана конфликтом зависимостей в разных версиях Clojure.В моем случае Incanter зависел от Clojure-1.3, в то время как мой Lein использует 1.2, а мой установленный clojure равен 1.4.

0 голосов
/ 03 ноября 2011

убедитесь, что вы используете Java 1.6+

У меня были подобные проблемы при работе на системах с устаревшей Java.

...