2010-07-30 3 views
9

Я создал файл "hello.clj"Как скомпилировать файл в Clojure

 
(ns clojure.examples.hello 
    (:gen-class)) 

(defn -main 
    [greetee] 
    (println (str "Hello " greetee "!"))) 

и попытаться собрать

 
clojurec hello.clj 

Но я получил эту ошибку

 
Exception in thread "main" java.io.FileNotFoundException: Could not locate hello/clj__init.class or hello/clj.clj on classpath: 
    at clojure.lang.RT.load(RT.java:398) 
    at clojure.lang.RT.load(RT.java:367) 
    at clojure.core$load__5058$fn__5061.invoke(core.clj:3734) 
    at clojure.core$load__5058.doInvoke(core.clj:3733) 
    at clojure.lang.RestFn.invoke(RestFn.java:413) 
    at clojure.core$load_one__5010.invoke(core.clj:3578) 
    at clojure.core$compile__5065$fn__5067.invoke(core.clj:3744) 
    at clojure.core$compile__5065.invoke(core.clj:3743) 
    at clojure.lang.Var.invoke(Var.java:346) 
    at clojure.lang.Compile.main(Compile.java:56) 

I попробуйте также поместить это в файл и запустить clojore hello.clj

 
(compile 'clojure.examples.hello) 

Но такая же ошибка.

+0

Просто из любопытства, что такое 'clojurec' ...? Откуда вы его взяли? Я действительно рекомендую Leiningen, хотя (подробности см. В моем ответе). Он очень широко используется в сообществе Clojure, и у вас не должно возникнуть проблем с получением поддержки при его использовании. –

+0

Это стандартный компилятор clojure на linux-системе, его скрипт оболочки с вызовом: exec java -cp /usr/share/java/clojure.jar:"$dest_dir$extra_clas spath "-Dclojure.compile.path =" $ dest_dir "clojure .lang.Compile "$ @" – jcubic

ответ

6

Пространство имен называется clojure.examples.hello должен находиться в файле с именем hello.clj в директории $CPDIR/clojure/examples, где $CPDIR является каталог включены в путь к классам JVM в.

В общем, попытка установить путь к классу и выдавать команду компиляции вручную не имеет смысла. Вместо этого используйте Leiningen; README имеет довольно подробное объяснение того, что вам нужно будет сделать.

Смежные вопросы