запуск clojure в eclipse (против часовой стрелки)

Я изучаю clojure на eclipse (плагин против часовой стрелки).

  • Когда я нажимаю «запустить» в eclipse (как и в случае с Java), я открываю не только консоль, но и это окно «REPL». Зачем он нужен и что он делает?
  • Когда я нажимаю «Выполнить», для запуска приложения требуется несколько секунд. Есть ли способ сделать это быстрее?
  • Когда мне нужно отредактировать код и перезапустить (запустить) приложение, я получаю это сообщение: «Выделение не может быть запущено, а последних запусков нет». Что это такое и почему это не позволяет мне перезапустить мой код? Если я подожду некоторое время, я могу запустить его снова.

Это простой фрагмент кода, который я пытаюсь запустить:

(ns ClojureTest.core)

(let [input (read-line)]
  (if (= "x" input)
    (do
      (println "Exit")
      (System/exit 0)
    )
    (do
      (println input)
      (recur)
    )
  )
)

ОБНОВЛЕНИЕ: мне удалось еще больше облажаться. Теперь, когда я нажимаю «Выполнить», консоль игнорирует любой ввод, как будто приложение даже не запущено...

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

REPL @ nrepl://127.0.0.1:60429 (user)

И после перезапуска eclipse он вернулся к этому:

REPL @ nrepl://127.0.0.1:60001 (ClojureTest.core)

Я без понятия что это значит.


person Caballero    schedule 15.09.2013    source источник


Ответы (1)


Вам нужен только один открытый REPL на проект. После открытия вы можете оценить измененный код из существующего файла (пространства имен), выбрав его в меню Clojure. Выбор или весь файл, в зависимости от того, что вы выберете, затем отправляется в REPL для оценки. Вы можете немедленно опробовать свои изменения, вызвав функции из REPL. Это называется интерактивной разработкой. Нет необходимости перекомпилировать весь проект, прежде чем вы сможете опробовать изменения.

Разработчики CCW просто выбрали для кнопки «Выполнить» действие «открыть REPL для существующего проекта». Используйте его только один раз и не нажимайте его во время разработки.

person Michiel Borkent    schedule 15.09.2013
comment
Спасибо за ваш ответ, я думал что-то подобное, но это совершенно сбивает с толку. Мне это нужно, чтобы очистить консоль и перезапустить приложение — я перепробовал каждый пункт меню Clojure — похоже, ни один из них этого не делает. - person Caballero; 15.09.2013
comment
Вам придется убить консоль и REPL. - person Michiel Borkent; 15.09.2013
comment
Я признаю, что это может сбивать с толку. Лучше просто использовать меню Clojure, если вы не хотите сюрпризов. - person Michiel Borkent; 15.09.2013
comment
Так что каждый раз, когда я редактирую код, мне нужно перезапускать REPL. Я не понимаю, как кто-то может развиваться на этом языке. В меню Clojure нет ничего, что могло бы помочь в этом. - person Caballero; 15.09.2013
comment
Это прямо противоположно тому, что я сказал в своем ответе. Вы только отправляете изменения в REPL, ничего не перезапуская. В этом основное отличие Clojure от других языков, требующих монолитного цикла редактирования/компиляции/запуска. В Clojure вы можете переопределить почти все во время выполнения. - person Michiel Borkent; 15.09.2013
comment
Фрагмент кода выше — я могу редактировать его сколько захочу — ничего не изменится, пока я не перезапущу REPL. Так как же именно работает эта переоценка? - person Caballero; 15.09.2013
comment
@Caballero Выберите фрагмент, перейдите в меню Clojure и нажмите «Оценить текущий выбор» или «S-выражение верхнего уровня». - person Michiel Borkent; 15.09.2013
comment
Я пробовал это - это дает мне всплывающее окно с требованием ввода, но мне нужно сделать это в консоли. Конечно, должен быть способ запустить приложение в консоли. - person Caballero; 15.09.2013
comment
Когда я оцениваю (строка чтения) из REPL, я получаю всплывающее окно с запросом ввода, я заполняю некоторый текст, и это результат вызова функции в виде строки, которая будет напечатана в REPL. - person Michiel Borkent; 15.09.2013
comment
Я начинаю понимать, что под консолью вы не имеете в виду консоль Eclipse. Да, вы можете запустить свой проект из окна терминала, если вы это имеете в виду. Для этого вам нужно установить leiningen и просто набрать «lein run» из каталога проекта. CCW просто позволяет вам вводить через окно для удобства. См. leiningen.org для более подробной информации. Если вы решили развернуть свой проект как uberjar, вам больше не нужен leiningen. - person Michiel Borkent; 15.09.2013
comment
Извините, я имел в виду консоль eclipse - ту, что находится рядом с окном REPL. - person Caballero; 15.09.2013
comment
Затем вы должны ввести ввод во всплывающем окне. - person Michiel Borkent; 15.09.2013