在Clojure中编译问题
-
03-07-2019 - |
题
我一直在尝试在Clojure中编译一个非常简单的test.clj而没有任何成功。我在 Clojure Google Group 有多个回复,但没有任何帮助。为了快速总结,这是我的clojure文件:
(ns test.test
(:gen-class))
(defn -main
[gre]
(println (str "Hello " gre)))
基本上它是 Clojure文档中提供的示例文件。
我已将此文件适当地放在 clojure / src / test / test.clj
中,并且应该能够使用(compile'test.test)
进行编译,但是我一直收到错误:
java.io.IOException: The system cannot find the path specified (test.clj:1)这让我相信这是一个类路径问题。我尝试使用 Clojure文档中给出的所有标准命令运行Clojure以及该主题的最新建议
java -classpath .; src; classes; clojure.jar clojure.main
。
如果有帮助,我的文件系统如下所示:
-+-clojure
+-classes/
+-+-src/
| |-+-test/
| | \-test.clj
+-\-test.clj
+-test.clj
+-clojure.jar
P.S。我在Vista Ultimate上运行,因此它可能可能是权限问题,但我检查了权限并且找不到任何错误。
解决方案
用于在Windows上编译 test.clj 的控制台输出:
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=>
生成的类文件位于classes目录中。
另请注意,您在主中缺少右括号。更正版本:
(ns test.test
(:gen-class))
(defn -main
[gre]
(println (str "Hello " gre)))
其他提示
C:\clojrue\java -cp .\src;.\classes;clojure.jar
-Dclojure.compile.path=classes clojure.lang.Compile test.test
不隶属于 StackOverflow