2009-03-03 4 views
7

Я пытаюсь скомпилировать очень простой test.clj в Clojure без каких-либо успехов. У меня есть thread на Clojure Google Group с несколькими ответами, но ничего не помогло. Чтобы быстро подвести итог, вот мой Clojure файл:Сборка задачи в Clojure

(ns test.test 
    (:gen-class)) 

(defn -main 
    [gre] 
    (println (str "Hello " gre))) 

В основном это файл примера приводится в Clojure documentation.

Я поместил этот файл appropiately в clojure/src/test/test.clj, и должны быть в состоянии компилировать с (compile 'test.test), но я получаю ошибку:

java.io.IOException: The system cannot find the path specified (test.clj:1)
, что приводит меня к мысли, что это проблема CLASSPATH. Я попытался запустить Clojure со всеми стандартными командами, указанными в Clojure documenation, а также последним предложением из потока java -classpath .;src;classes;clojure.jar clojure.main.

Если это помогает, моя файловая выглядит следующим образом:

-+-clojure 
+-classes/ 
+-+-src/ 
| |-+-test/ 
| | \-test.clj 
+-\-test.clj 
+-test.clj 
+-clojure.jar 

P.S. Я работаю на Vista Ultimate, поэтому может быть возможно быть проблемой разрешений, но я проверил разрешения и не смог найти с ними ничего плохого. Выход

ответ

9

Консоль для компиляции test.clj на Windows:

C:\clojure>dir /b/s 
C:\clojure\classes 
C:\clojure\src 
C:\clojure\src\test 
C:\clojure\src\test\test.clj 

C:\clojure>java -cp c:\dev\clojure.jar;.\src;.\classes clojure.lang.ReplClojure 
user=> (compile 'test.test) 
test.test 
user=> 

Сформированные файлы классов находятся в каталоге классов.

Также обратите внимание, что вам не хватает правильной круглой скобки в вашем основном. Исправленная версия:

(ns test.test 
    (:gen-class)) 

(defn -main 
    [gre] 
    (println (str "Hello " gre))) 
+0

Отлично! Thank-yee очень, это работает как шарм! Кроме того, я собираюсь отредактировать вопрос, потому что я так близко отрывался от копии/вставки, которую я сделал. – Mike

+0

HI У меня такая же проблема. Что может быть неправильным? Я пробовал ваше решение: C: \ clojure> java -cp clojure-1.0.0.jar;. \ Src;. \ Classes clojure.lang.Repl user => (скомпилировать 'test.test) java.io .IOException: система не может найти указанный путь (test.clj: 1) – unj2

+1

Это означает, что у вас не было класса/каталога в вашем CLASSPATH. – 2010-02-03 19:53:39

0
C:\clojrue\java -cp .\src;.\classes;clojure.jar 
    -Dclojure.compile.path=classes clojure.lang.Compile test.test