Проблемы с импортом Clojure Libs в раю - PullRequest
4 голосов
/ 13 июля 2010

У меня иногда возникает эта проблема, и я вообще обхожу ее, но это довольно неприятно.

У меня есть все Заклинатель (зацените, если не знаете: превосходно) на моем пути к классам.Я пытаюсь импортировать его (через REPL слизи) следующим образом: user> (use 'incanter.core), но не получается.

Выполнение этого: user> (use 'clojure.contrib.def) работает просто отлично, и этот файл находится в том же месте - на моем пути к классам.

Несмотря на это, ошибка не имеет ничего общего с classpath: это так:

Don't know how to create ISeq from: clojure.lang.Symbol
  [Thrown class java.lang.IllegalArgumentException] 

Вы можете увидеть весь мой терминал здесь (aснимок экрана.)

Я не знаю, что здесь происходит, и это действительно расстраивает, поскольку я действительно хотел бы использовать Incancter, и я могу из REPL бинарного файла Incanter.Я определенно не хочу развиваться из этого - и это должно работать.

Любая помощь будет очень оценена.

РЕДАКТИРОВАТЬ:

Похоже, что Incanter требует Clojure 1.2, а lein swank дает мне Clojure 1.1.Это может быть причиной моих проблем: если так, есть ли способ продолжить использовать Swank & Lein с Clojure 1.2 ?

Еще раз спасибо!

РЕДАКТИРОВАТЬ:

Очевидно, если вы начнете использовать Clojure-1.1 и lein swank, вы застряли с ним, если вы не создадите новый проект.

Если у будущих людей возникнет эта проблема, эта статья помогла мне , но также , по крайней мере для меня вы должны начать новый проект lein, еслиВы начали его, используя leink swank и Clojure-1.1. Простое изменение вашего файла project.clj, а затем повторное использование lein swank не работает.

1 Ответ

2 голосов
/ 13 июля 2010

Да, вы можете использовать Leiningen и swank-clojure с Clojure 1.2. Возможно, вам придется использовать последнюю версию Leiningen (я не уверен, что какое-то старое ограничение касалось только lein repl или было lein swank; в любом случае, попробуйте 1.2-RC2, который вы найдете в загрузках раздел на GitHub ). Вам также нужно будет использовать достаточно недавний swank-clojure; Я сам пользуюсь проверкой, чтобы получить ваши здесь .

Кроме этого, просто используйте 1,2 банки для Clojure и contrib. (Lein использует свой собственный Clojure, отдельный от того, что использовался для lein swank, для своих внутренних операций, и вам никогда не нужно заботиться об этом; swank-clojure не имеет пространств имен AOT'd и не особенно заботится о версии Clojure, кроме одного раза (долго!), когда что-то ломается, применяется патч и радость восстанавливается.)

Я надеюсь, что вышеупомянутое помогает, но если это не так: описание вашей проблемы не совсем достаточно для того, чтобы я мог получить четкое представление о том, что происходит. Не могли бы вы добавить информацию о том, что означает, что «весь Incanter» находится на вашем пути к классам (вы имеете в виду источники jar s? Где вы их получаете? Как вы устанавливаете свой путь к классам?). Не зная об этом, будет сложно скопировать ваши настройки, чтобы попытаться найти источник проблемы. Конечно, если столкновение с некоторыми версиями исправляет ситуацию, пожалуйста, не обращайте внимания на мою текущую путаницу. ; -)

...