Как я настраиваю путь к классу Clojure в Emacs после установки с ELPA?

Я пытаюсь добавить пути к своему пути к классу в 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 является вещью, которую я должен установить здесь.Спасибо за помощь.

9
задан derefed 7 March 2010 в 22:02
поделиться

3 ответа

Как говорит 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))"

Это позволяет вам явно контролировать, как запускается виртуальная машина, и, вероятно, аналогично тому, что вам, вероятно, и так придется делать в производственной среде.

10
ответ дан 4 December 2019 в 13:47
поделиться

Вы хотите:

M-x swank-clojure-project

Это добавляет все jar-файлы в ваш каталог / lib.

Если вы хотите: использовать файл clojure (bar.clj), например, в / foo, вы должны сделать:

(ns foo
  (:use foo.bar)) 
3
ответ дан 4 December 2019 в 13:47
поделиться

Извините, я не могу помочь вам с ответом, но, возможно, ваш вопрос неверен:

Я сам не запускал сеанс clojure из Emacs для возрастов. Я думаю, что лучший способ - описать все ваши зависимости в одном месте (например, maven pom.xml или leiningen project.clj ), а затем начать шикарный сеанс с этими зависимостями. Т.е. добавьте библиотеку swank-clojure в свои (dev-) зависимости, а затем используйте lein swank или maven swank (не уверен насчет последнего - haven ' t использовал это часто и не так давно) из командной строки, чтобы запустить сеанс swank, и использовать Mx slime-connect для подключения к этому сеансу.

Преимущество состоит в том, что в пути к классам вы получаете все, что вам нужно, и не более того, поэтому вы не можете по ошибке использовать что-то из ответа, о котором ваш последний проект не знает.

Это сообщение в блоге дает хорошее резюме, как это сделать правильно.

2
ответ дан 4 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: