簡體   English   中英

如何使用命令行參數運行Clojure應用

[英]How to run a Clojure app with command line parameters

要從命令行運行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應用程序的方式是否錯誤?

謝謝。

您只需要指定腳本名稱,在clojure.main之后不帶-i鍵即可。 在您的情況下, clojure.main認為,test.clj是要在eval之前執行的程序(並且它已經執行了),而arg1是要執行的腳本

請參閱clojure.main / main函數的選項說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM