Я пытаюсь добавить пути к своему пути к классу в Clojure REPL, который я создал в Emacs с помощью ELPA. По-видимому, это не переменная среды $CLASSPATH, а скорее swank-clojure-classpath переменная, которую настраивает Чванство. Поскольку я использовал ELPA для установки Чванства, Clojure, и т.д., существует тонна .el файлов, которые заботятся обо всем вместо моего .emacs файла. К сожалению, я не могу выяснить, как изменить путь к классу теперь.
Я попытался использовать (setq 'swank-clojure-extra-classpaths (список...)) и прежде и после материала ELPA в моем .emacs, и я попытался добавить пути непосредственно к swank-clojure-classpath в .emacs, .emacs.d/init.el, и .emacs.d/user/user.el, но ничто не работает.
То, что я в конечном счете пытаюсь сделать, должно добавить и текущий каталог "." и каталог, в котором я сохраняю свои программы Clojure. Я предполагаю, что swank-clojure-classpath является вещью, которую я должен установить здесь.Спасибо за помощь.
Как говорит Mac, вы можете использовать
M-x swank-clojure-project
, чтобы установить REPL слизи в проект clojure; команда запросит у вас корневой каталог ваших проектов и установит путь к классам, который включает множество каталогов, включая src / lib / и resources /, если они есть.
В качестве альтернативы, если вы используете leiningen, вы можете запустить его в терминале с помощью команды
$ lein swank
из корневого каталога вашего проекта. Это установит стандартный путь к классам проекта (как указано выше). Отсюда вы можете подключиться к этому запущенному процессу через Emacs с помощью команды
M-x slime-connect
Наконец, третий вариант, который я бы порекомендовал, - это подключиться через Emacs / slime (с Mx slime-connect
) к запущенному процессу. вашим собственным сценарием оболочки, который определяет настраиваемый набор аргументов командной строки JVM, например
#!/bin/bash
java -server -cp "./lib/*":./src clojure.main -e "(do (require 'swank.swank) (swank.swank/start-repl))"
Это позволяет вам явно контролировать, как запускается виртуальная машина, и, вероятно, аналогично тому, что вам, вероятно, и так придется делать в производственной среде.
Вы хотите:
M-x swank-clojure-project
Это добавляет все jar-файлы в ваш каталог / lib.
Если вы хотите: использовать файл clojure (bar.clj), например, в / foo, вы должны сделать:
(ns foo
(:use foo.bar))
Извините, я не могу помочь вам с ответом, но, возможно, ваш вопрос неверен:
Я сам не запускал сеанс clojure из Emacs для возрастов. Я думаю, что лучший способ - описать все ваши зависимости в одном месте (например, maven pom.xml
или leiningen project.clj
), а затем начать шикарный сеанс с этими зависимостями. Т.е. добавьте библиотеку swank-clojure
в свои (dev-) зависимости, а затем используйте lein swank
или maven swank
(не уверен насчет последнего - haven ' t использовал это часто и не так давно) из командной строки, чтобы запустить сеанс swank, и использовать Mx slime-connect
для подключения к этому сеансу.
Преимущество состоит в том, что в пути к классам вы получаете все, что вам нужно, и не более того, поэтому вы не можете по ошибке использовать что-то из ответа, о котором ваш последний проект не знает.
Это сообщение в блоге дает хорошее резюме, как это сделать правильно.