Короткая версия: ошибки при запуске M-x slime-connect или M-x clojure-jack-in при использовании lein swank для запуска сервера swank.
Я использую emacs 24.0.50.1 в Ubuntu 10.10. Я установил следующие пакеты в emacs из ELPA: clojure-mode, paredit, slime, slime-repl
Я установил leiningen из github и добавил его в classpath, затем запустил
lein plugin install swank-clojure 1.3.3
.
После этого я создал новый каталог ~ / tmp /, переместился в него и запустил:
lein new test-project
который, казалось, настроил все в порядке. Затем я открыл /tmp/new-project/project.clj в emacs и изменил его на:
(defproject test-project "1.0.0-SNAPSHOT"
:description "Test Project"
:dependencies [[org.clojure/clojure "1.2.1"]
[org.clojure/clojure-contrib "1.2.0"]]
:dev-dependencies [[swank-clojure "1.3.3"]])
После этого я вернулся в папку / tmp / new-project и запустил lein deps
, затем lein swank
, чтобы загрузить зависимости и запустить сервер swank, который выдает:
Connection opened on local port 4005.
Вернувшись в emacs, я столкнулся с проблемой подключения его к серверу swank. Я попытался открыть файл core.clj и запустить M-x slime-connect
, который выдает ошибку:
Symbol's function definition is void: define-slime-contrib
Что заставляет меня думать, что он либо не видит работающий сервер swank, либо нужно настроить его, чтобы он увидел сервер. Я также попытался (с тем же открытым файлом и с открытым project.clj) M-x clojure-jack-in
, который, как я предполагаю, пытается запустить REPL clojure в папке проекта, но это дает следующее:
Debugger entered--Lisp error: (error "Could not start swank server: sh: lein: not found
")
signal(error ("Could not start swank server: sh: lein: not found\n"))
error("Could not start swank server: %s" "sh: lein: not found\n")
clojure-jack-in-sentinel(#<process swank> "exited abnormally with code 127\n")
Я следовал инструкциям из http://matthias -schneider.org / docs / clojure-setup / для пакетов emacs и настройки lein, затем начал следовать инструкциям Test Configuration из http://riddell.us/ClojureSwankLeiningenWithEmacsOnLinux.html однажды у меня возникли проблемы с подключением Mx slime-connect к REPL.
Обновление
удалил ~ / tmp / test-project, удалил пакеты emacs и /.emacs.d/elpa/, переустановил emacs, переустановил пакеты clojure-mode и paredit, скопировал ~ / .lein в / bin, чтобы не было пути проблемы (не был уверен, что /.lein или /.lein/bin должны быть в пути). Запустил /.lein/bin/swank-clojure
, а затем открыл emacs, открыл project.clj и попробовал M-x slime-connect
, который теперь запрашивает у меня хост (локальный по умолчанию), порт (по умолчанию 4005), говорит, что подключается к swank, выдает сообщение о swank и версии слизи, отличающиеся (y или n) y, тогда минибуферы дают error in process filter: Lisp connection closed unexpectedly
. В терминале, где я запускал /.lein/bin/swank-clojure
, появляется следующее сообщение об ошибке Java:
exception in read loop
java.lang.NumberFormatException: For input string: " a6"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:470)
at swank.core.protocol$read_swank_message.invoke(protocol.clj:41)
at swank.core.connection$read_from_connection.invoke(connection.clj:59)
at swank.core$read_loop.invoke(core.clj:337)
at swank.swank$connection_serve$fn__1486$fn__1487.invoke(swank.clj:32)
at clojure.lang.AFn.applyToHelper(AFn.java:159)
at clojure.lang.AFn.applyTo(AFn.java:151)
at clojure.core$apply.invoke(core.clj:540)
at swank.swank$connection_serve$fn__1486.doInvoke(swank.clj:29)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.AFn.run(AFn.java:24)
at java.lang.Thread.run(Thread.java:636)
Обновление:
Решено, мне нужно было удалить emacs и удалить ВСЕ из /.emacs.d/, а не только пакеты в / elpa /. После переустановки я получил только пакет clojure-mode, а не slime или slime-repl. Теперь можно подключиться к M-x clojure-jack-in
и я готов выполнить некоторую работу!