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 проект?

10
задан So8res 26 May 2010 в 14:58
поделиться

2 ответа

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

У вас должен быть каталог проекта Clojure / в пути к классам:

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

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

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

9
ответ дан 3 December 2019 в 23:11
поделиться

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

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

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

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

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

5
ответ дан 3 December 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: