Как скомпилировать пространство имен в удаленном REPL
У меня проблема с компиляцией .clj
файлы, которые находятся в проекте, где я запускаю процесс сервера nREPL:
- Я создал новый проект, используя
lein new xxx
, - В папке проекта я запустил nREPL
lein repl
, - В другом окне терминала я запустил клиент
lein repl :connect localhost:12345/repl
, Я создал простой файл пространства имен и сохранил его внутри проекта в соответствующем месте:
(ns remote.one) (def foo 42)
Теперь на клиентском терминале я вызвал эту функцию
(compile 'remote.one)
У меня есть следующее исключение:
CompilerException java.lang.ClassNotFoundException: remote.one, compiling:(C:\Users\xxx\AppData\Local\Temp\form-init2429492334116477513.clj:1:1)
Теперь я ожидал, что вызов компиляции будет выполнен на сервере, а не на клиенте. Можно ли это сделать вообще?
Спасибо
1 ответ
Я только что попробовал, и это сработало для меня. То, что случилось в первый раз, когда я попробовал это, было то, что я пропустил шаг: установив текущий каталог в качестве проекта. Я вижу, что этот шаг также отсутствует в вашем описании, возможно, поэтому он не работает в вашем случае.
- Создать новый проект, используя
lein new remote
, - Изменить текущий каталог
cd remote
, - Запустите сервер nREPL из папки проекта с помощью
lein repl :headless
(который я понимаю сейчас, также отличается от вашего описания). - Откройте новую консоль и запустите клиент nREPL
lein repl :connect localhost:port/repl
в~/.
, - Создать файл для нс в
~/remote/src/remote/one.clj
, - От клиента оцените
(compile 'remote.one)
,
(С помощью Leiningen 2.3.4 on Java 1.7.0 Java HotSpot(TM) 64-Bit Server VM
а также Clojure 1.5.1
).