Могу ли я использовать swank-clojure с мастер-веткой clojure 1.2? - PullRequest
2 голосов
/ 08 апреля 2010

Я с удовольствием использую swank-clojure, установленный через elpa.Но я бы хотел поработать с deftype, defprotocol и т. Д., Которых нет в clojure 1.1.

Чтобы использовать собственные пути к классам, я использую отличное предложение:Рик Мойнихан в вопросе stackoverflow об установке пользовательских путей к классам , который должен был установить скрипт вроде:

#!/bin/bash 

java -server -cp "./lib/*":./src clojure.main -e "(do (require 'swank.swank) (swank.swank/start-repl))"

И это работает без сбоев, если файл jar clojure в lib равен 1.1, нос 1.2 он взрывается:

Exception in thread "main" java.lang.NoSuchMethodError: clojure.lang.RestFn.<init>(I)V (macroexpand.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:5274)
    at clojure.lang.Compiler.load(Compiler.java:5663)
    at clojure.lang.RT.loadResourceScript(RT.java:330)
    at clojure.lang.RT.loadResourceScript(RT.java:321)
    at clojure.lang.RT.load(RT.java:399)
    at clojure.lang.RT.load(RT.java:371)
    at clojure.core$load__5663$fn__5671.invoke(core.clj:4255)
    at clojure.core$load__5663.doInvoke(core.clj:4254)
    at clojure.lang.RestFn.invoke(RestFn.java:409)
...and many, many more

Так есть ли какое-то волшебное заклинание, чтобы сделать эту работу, или совместимость с clojure 1.2 еще не достигнута?

Ответы [ 3 ]

3 голосов
/ 08 апреля 2010

Проблема здесь, как указано выше. По-видимому, вы используете Clojure, который не синхронизирован с clojure-contrib. Вам необходимо собрать / использовать сборку Clojure, созданную на основе используемого вами jar-файла clojure-contrib, иначе вы по-прежнему будете видеть эту ошибку. По крайней мере, это единственное, что я знаю, что приведет к этой конкретной ошибке.

Я чуть не застрелился, пытаясь выяснить это некоторое время назад. Будем надеяться, что это избавило вас от неприятностей.

2 голосов
/ 08 апреля 2010

Да, это возможно. Просто убедитесь, что в той же папке у вас нет несовпадающего файла clojure contrib jar. У меня был вклад clojure из 1.1 и снимок clojure jar 1.2.

0 голосов
/ 23 августа 2010

Emacs, Swank, Clojure и Maven все еще друзья:

В этом посте моего блога описан самый простой способ, которым я видел, чтобы сервер swank работал в Linux. Обычно вы создаете файл pom и запускаете maven, который решает все проблемы с версиями:

http://learnclojure.blogspot.com/2010/03/clojure-maven-emacs-eternal-golden.html

Был также дополнительный пост, показывающий, как добавить compojure.

И это описывает использование плагина версии maven для определения и использования последних версий всего и добавления заклинания:

http://learnclojure.blogspot.com/2010/08/returning-after-long-absence.html

Все по-прежнему прекрасно работает.

ELPA, похоже, является лучшим способом установки слизи в emacs.

...