Как выглядят закрытые пространства имен? - PullRequest
9 голосов
/ 23 ноября 2011

Для начала я не программист на Java, поэтому было бы полезно, если ваши ответы не определены в терминах Java (поскольку это имеет смысл).

У меня есть проект leiningen (в частности,веб-проект, использующий noir ), использующий, как кажется, обычную схему размещения исходных файлов clojure в src/YOUR-NAMESPACE/.До сих пор я успешно добавлял каталоги и файлы, и я использовал путь к файлу в качестве основы для ns (следуя шаблону, который я вижу в сгенерированном коде).

Я добавил новыйфайл, который не работал, и мне интересно, почему.Его путь равен PROJECT-ROOT/src/bayou/lib/api-helpers.clj, а пространство имен - (ns bayou.lib.api-helpers).Конкретная ошибка, которую я получаю:

java.io.FileNotFoundException: Could not locate bayou/lib/api_helpers__init.class or bayou/lib/api_helpers.clj on classpath

Какие шаги нужно предпринять, чтобы clojure распознал пространство имен?

1 Ответ

13 голосов
/ 23 ноября 2011

Проблема заключается в дефисе в пространстве имен.

Из Радости Clojure

HYPHENS / UNDERSCORES Если вы решили назвать свои пространства имен дефисами, à la my-cool-lib, тогда соответствующий исходный файл должен быть назван с подчеркиванием вместо дефисов (my_cool_lib.clj).

Вот основное объяснение: https://stackoverflow.com/q/4451693/32174

...