[英]How to run a Clojure app with command line parameters
To run Clojure files from command line, I'm using a zhs alias I added to my .zshrc: 要从命令行运行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 '
With this, I can run my Clojure app like this: 有了这个,我可以像这样运行我的Clojure应用程序:
clojure test3.clj
But it doesn't work when I want to send command line parameters. 但是当我要发送命令行参数时,它不起作用。
➜ 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)
What am I doing wrong? 我究竟做错了什么? Is my way of running Clojure apps wrong? 我运行Clojure应用程序的方式是否错误?
Thanks. 谢谢。
you just need to specify name of script, without -i
key after clojure.main
. 您只需要指定脚本名称,在clojure.main
之后不带-i
键即可。 In your case, clojure.main
thinks, that test.clj is program to eval before (and it do it), while arg1
is script to execute 在您的情况下, clojure.main
认为,test.clj是要在eval之前执行的程序(并且它已经执行了),而arg1
是要执行的脚本
See description of option for clojure.main/main function 请参阅clojure.main / main函数的选项说明
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.