Как вы можете контролировать порядок компиляции в leininigen?

Это должна быть простая проблема для решения, но каждый раз, когда я пытаюсь скомпилировать, я получаю исключения class not found, вызванные тем, что leininigen пытается скомпилировать классы в неправильном порядке. Я зашел так далеко, что попытался явно определить классы порядка, которые должны быть скомпилированы в файле project.clj, используя :aot, но это игнорируется. Файлы, получающие исключения class not found, имеют операторы :require в объявлении ns, но они также игнорируются. Как изменить порядок компиляции?

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

Вот пример ошибки, которую я получаю (заменил базовое пространство имен на )

Exception in thread "main" java.lang.NoClassDefFoundError: <MyProject>/util$loading__4910__auto__, compiling:(obj.clj:1:1)

Файл, в котором он терпит неудачу, содержит ...

(ns <MyProject>.obj
  (:gen-class)
  (:require <MyProject>.util)
)

util.clj содержит...

(ns <MyProject>.util
  (:gen-class)
)

project.clj содержит...

  :aot [
    ;...
    <MyProject>.util
    <MyProject>.obj
    ;...
  ]

person Ralph Ritoch    schedule 14.04.2014    source источник
comment
Из ваших тегов вы запускаете это из Eclipse (я полагаю, CCW?). Есть некоторые проблемы с переключением CCW на новую модель запуска, особенно в Windows. Работает ли это так, как ожидалось, при выполнении «прогона lein» из командной строки? Работает ли это либо из CCW, либо из командной строки при удалении всех директив (: gen-class) и : aot?   -  person NielsK    schedule 14.04.2014
comment
@NielsK, мне действительно удалось решить проблему, перезагрузив компьютер, запустив lein clean, а затем lein compile. Я все еще хотел бы знать, как решить эту проблему без перезагрузки.   -  person Ralph Ritoch    schedule 14.04.2014
comment
@NielsK, чтобы ответить на ваш вопрос, я использую плагин eclipse против часовой стрелки. У меня нет leininigen, установленного вне eclipse, поэтому инструменты lein недоступны в моей командной оболочке, только через eclipse.   -  person Ralph Ritoch    schedule 14.04.2014
comment
@NeilsK по вашему предложению я установил Leiningen отдельно, и он кажется более надежным, чем тот, который использует eclipse, поскольку он фактически завершается после компиляции и не оставляет открытыми сотни сеансов JDE, как это делает eclipse. Я подозреваю, что проблема здесь в версии lein, используемой плагином против часовой стрелки.   -  person Ralph Ritoch    schedule 14.04.2014
comment
Я подозреваю, что это больше связано с проблемами кода запуска подпроцесса Eclipse/CCW, который используется для запуска leiningen. В группе против часовой стрелки Google идет несколько дискуссий о текущих проблемах. Предыдущие заставили меня переключиться на IntelliJ с плагином Cursive, так как именно Windows больше всего страдает от этих проблем.   -  person NielsK    schedule 14.04.2014