Clojure загрузить файлы
Я пытаюсь создать простой проект clojure, и я не уверен, как загружать файлы между проектами. Я уверен, что ответ в документации, но я не могу найти простой ответ в любом месте, и я не уверен, где искать.
По существу, мой каталог выглядит следующим образом:
Clojure/
clojure/
clojure.jar
other clojure files
clojure-contrib/
clojure-contrib.jar
other contrib files
project/
main.clj
utils.clj
И я хочу, чтобы main.clj был примерно таким:
(ns project.main
(:require project.utils))
(greet)
и utils.clj должны быть примерно такими:
(ns project.utils)
(defn greet [] (println "Hello, World!"))
Но это не удается:
Exception in thread "main" java.io.FileNotFoundException: Could not locate project/utils__init.class or project/utils.clj on classpath: (main.clj:1)
Когда я пытаюсь запустить его. Мой путь к классу включает верхний каталог Clojure/
и обе банки. Я также попытался разместить каталог project/
в пути к классам, но не повезло.
Как вы создаете простой проект clojure?
Ответы
Ответ 1
Вы не указываете, что такое ваша среда (например, Emacs/SLIME/Swank, vim/Vimclojure), поэтому я собираюсь предположить, что вы пытаетесь вызвать его из командной строки.
Вам нужно иметь каталог проекта Clojure/
в пути к классам:
java -cp path/to/clojure.jar:path/to/clojure-contrib.jar:path/to/Clojure ...
Убедитесь, что пути верны относительно текущего рабочего каталога. Он должен указывать на корень вашего пространства имен (т.е. Если он работает в Clojure/
, путь .
).
Фактически, ваш макет проекта Works On My Machine (tm), за исключением того, что у меня есть use
вместо require
(но у вас должна быть другая ошибка, если вы дошли до точки, когда Clojure может найти все ваши файлы).
Ответ 2
Этот ответ Я отправил на другой вопрос, надеюсь, даст вам представление о том, как ваши имена файлов должны касаться имен пространства имен для работы. Однако, поскольку ваш вопрос: "Как настроить простой проект Clojure", лучше начать следующее:
-
Перейдите в GitHub и возьмите Leiningen.
-
Следуйте инструкциям в README. В итоге вы сделаете что-то вроде
$ lein new my-project
$ cd my-project
# ... edit project.clj ...
$ lein deps
-
Взломайте! Вам нужно будет поместить файлы в нужные места. Это будет означать, что ваши исходные файлы в дереве каталогов коренится в my-project/src
, причем ваше основное пространство имен, скорее всего, находится в my-project/src/my_project/core.clj
. Но на самом деле, я объяснил все подробности в ответ, связанный с выше, поэтому, пожалуйста, прочитайте его (и оставляйте комментарий, если я пропустил что нибудь).: -)
Leiningen позаботится о базовом макете проекта и установит путь к классу REPL/swank/nailgun для вас (если вы еще не встретили последние два, вы скоро - но это отдельная тема, черта, часть которой я покрыл в определенной степени, например в этом SO-ответе), так что, надеюсь, вам никогда не придется иметь дело с n n n n ense hand hand hand, (Ответ, связанный с swank, с которым я связан в последнем заключении в скобках, содержит подробную информацию о том, как настроить swank с правильным классом классов из Emacs.)