如何使用命令行参数运行Clojure应用程序

时间:2011-10-11 08:18:20

标签: clojure command-line-arguments

要从命令行运行Clojure文件,我使用的是我添加到.zshrc中的zhs别名:

alias 'clojure=java -cp /home/sinan/cclojure/lib/clojure-1.2.1.jar:/home/sinan/cclojure/lib/clojure-contrib-1.2.0.jar clojure.main -i '

有了这个,我可以像这样运行我的Clojure应用程序:

clojure test3.clj

但是当我想发送命令行参数时它不起作用。

➜  src  clojure test3.clj arg1 arg2
Exception in thread "main" java.io.FileNotFoundException: arg1 (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:120)
        at java.io.FileInputStream.<init>(FileInputStream.java:79)
        at clojure.lang.Compiler.loadFile(Compiler.java:5817)
        at clojure.main$load_script.invoke(main.clj:221)
        at clojure.main$script_opt.invoke(main.clj:273)
        at clojure.main$main.doInvoke(main.clj:354)
        at clojure.lang.RestFn.invoke(RestFn.java:457)
        at clojure.lang.Var.invoke(Var.java:377)
        at clojure.lang.AFn.applyToHelper(AFn.java:172)
        at clojure.lang.Var.applyTo(Var.java:482)
        at clojure.main.main(main.java:37)

我做错了什么?我运行Clojure应用程序的方式是错误的吗?

感谢。

1 个答案:

答案 0 :(得分:3)

您只需要在-i之后指定脚本名称,而不需要clojure.main键。在你的情况下,clojure.main认为,test.clj是以前编程的eval(并且它执行),而arg1是要执行的脚本

请参阅clojure.main/main功能

的选项说明