Как скомпилировать пространство имен в удаленном REPL

У меня проблема с компиляцией .clj файлы, которые находятся в проекте, где я запускаю процесс сервера nREPL:

  1. Я создал новый проект, используя lein new xxx,
  2. В папке проекта я запустил nREPL lein repl,
  3. В другом окне терминала я запустил клиент lein repl :connect localhost:12345/repl,
  4. Я создал простой файл пространства имен и сохранил его внутри проекта в соответствующем месте:

    (ns remote.one)
    (def foo 42)
    
  5. Теперь на клиентском терминале я вызвал эту функцию

    (compile 'remote.one) 
    

У меня есть следующее исключение:

CompilerException java.lang.ClassNotFoundException: remote.one, compiling:(C:\Users\xxx\AppData\Local\Temp\form-init2429492334116477513.clj:1:1)

Теперь я ожидал, что вызов компиляции будет выполнен на сервере, а не на клиенте. Можно ли это сделать вообще?

Спасибо

1 ответ

Решение

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

  1. Создать новый проект, используя lein new remote,
  2. Изменить текущий каталог cd remote ,
  3. Запустите сервер nREPL из папки проекта с помощью lein repl :headless (который я понимаю сейчас, также отличается от вашего описания).
  4. Откройте новую консоль и запустите клиент nREPL lein repl :connect localhost:port/repl в ~/.,
  5. Создать файл для нс в ~/remote/src/remote/one.clj,
  6. От клиента оцените (compile 'remote.one),

(С помощью Leiningen 2.3.4 on Java 1.7.0 Java HotSpot(TM) 64-Bit Server VM а также Clojure 1.5.1).

Другие вопросы по тегам