Lein Swank не работает после обновления Lein - PullRequest
3 голосов
/ 15 февраля 2012

После обновления Leiningen (с v1.6 до v1.7) с помощью команды lein upgrade команда lein swank перестала работать с сообщением об ошибке:

Exception in thread "main" java.lang.NoClassDefFoundError:  
Caused by: java.lang.ClassNotFoundException:  
[...] 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class:  .  Program will exit.

Поскольку я попробовал это из командной строки, я считаю, что Emacsконфигурация не имеет значения в этом случае.Поэтому я попытался полностью переустановить Leiningen.Что я сделал (используя предложения здесь и сообщения об ошибках):

rm -R ~/.m2
# rm ~/.lein/plugins/*  
lein self-install

(я использовал вторую строку только при второй переустановке, поэтому она приведена здесь для полноты картины)

Затем я создал новый проект и установил плагин lein-swank, поскольку, насколько я понимаю, на данный момент это рекомендуется:

lein new test-project
lein plugin install swank-clojure 1.4.0  # I tried earlier version (1.3.2) too

И, наконец, запустил lein swank с помощью:

cd test-project
lein swank

Но получил ту же ошибку, что и раньше.

Итак, мои вопросы:

  1. Как решить эту проблему?
  2. Правильно ли я переустановил Leiningen или некоторые шаги отсутствуют?

UPD. Вот project.clj, созданный с новым проектом:

(defproject test-project "1.0.0-SNAPSHOT"
   :description "FIXME: write description"
   :dependencies [[org.clojure/clojure "1.3.0"]])

1 Ответ

1 голос
/ 24 февраля 2012

Помогает ли swank-clojure страница поиска и устранения неисправностей справка:

Устранение неисправностей

В настоящее время имеется несколько версий swank-clojure на classpath может вызвать проблемы при запуске lein swank или lein чертик. Рекомендуется не ставить swank-clojure в ваш : dev-dependencies, но запустите установку плагина lein, чтобы установить его глобально для всех проектов. Это также означает, что люди взламывают в вашем проекте его не нужно будет загружать, если они не являются пользователями Emacs.

Для некоторых пакетов также возможно использовать старые версии swank-clojure транзитивно, поэтому проверьте каталог lib /, если вы возникли проблемы. В частности, Incanter, как известно, демонстрирует это проблема. Разумное использование: исключения заставляют его работать:

:dependencies [[incanter "1.2.3" :exclusions [swank-clojure]]]

Начиная с swank-clojure 1.3.4, более старые версии clj-stacktrace чем 0.2.1 в вашем проекте или плагинах пользовательского уровня приведет к невозможности символ разрешения: ошибки pst-elem-str. Имейте в виду, что пользовательский уровень плагины в ~ / .lein / плагины - это uberjars в Leiningen 1.x, так что возможно, что один из ваших плагинов (например, lein-difftest перед версия 1.3.7) содержит старый clj-stacktrace, даже если он не имеет свой собственный файл там. Указание более новой версии должно быть достаточно, если у вас проблемы:

:dependencies [[clj-stacktrace "0.2.4"]]
...