Clojure загрузить файлы - PullRequest
10 голосов
/ 26 мая 2010

Я пытаюсь настроить простой проект 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)

Когда я пытаюсь запустить его. Мой classpath включает в себя верхний каталог Clojure/ и оба фляги. Я также попытался поместить каталог project/ в classpath, но безуспешно.

Как вы настраиваете простой clojure проект?

Ответы [ 2 ]

9 голосов
/ 26 мая 2010

Вы не упоминаете, какова ваша среда (например, Emacs / SLIME / Swank, vim / Vimclojure), поэтому я собираюсь предположить, что вы пытаетесь вызвать ее из командной строки.

Вам необходимо иметь каталог проекта Clojure/ в classpath:

java -cp path/to/clojure.jar:path/to/clojure-contrib.jar:path/to/Clojure ...

Убедитесь, что пути правильные относительно текущего рабочего каталога. Он должен указывать на корень вашего пространства имен (т. Е. При запуске в Clojure/, путь будет .).

На самом деле, макет вашего проекта работает на моей машине (tm), за исключением того, что у меня use вместо require (но в любом случае вы должны были получить другую ошибку, если дошли до точки, когда Clojure смог найти все ваши файлы).

5 голосов
/ 26 мая 2010

Этот ответ Я отправил на другой вопрос, надеюсь, даст вам представление о том, как ваши имена файлов должны соотноситься с именами пространства имен для вещей, чтобы работать. Тем не менее, поскольку ваш вопрос «как настроить простой проект Clojure», лучше начать следующее:

  1. Зайдите на GitHub и возьмите Leiningen .

  2. Следуйте инструкциям в README. В итоге вы сделаете что-то вроде

    $ lein new my-project
    $ cd my-project
    # ... edit project.clj ...
    $ lein deps
    
  3. взломать! Вы должны будете поместить свои файлы в правильные места. Это будет означать помещение ваших исходных файлов в дерево каталогов с корнем в my-project/src, а пространство имен вашего ядра, скорее всего, будет находиться в my-project/src/my_project/core.clj. Но на самом деле, я объяснил все детали в ответе, связанном с выше , поэтому, пожалуйста, прочитайте его (и оставьте комментарий, если я что-то пропустил). : -)

Leiningen позаботится о базовой схеме проекта и настройке пути к классу для REPL / swank / nailgun для вас (если вы еще не сталкивались с последними двумя, вы скоро это сделаете - но это отдельная тема часть, которую я в некоторой степени охватил, например, в этом SO-ответе ), поэтому, надеюсь, вам никогда не придется иметь дело с ерундой java -cp ... вручную. (Ответ, связанный с Суонком, на который я ссылался в последнем примечании в скобках, содержит подробности о том, как настроить Суонк с правильным путем к классу из Emacs.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...