Как запустить приложение Clojure с параметрами командной строки - PullRequest
0 голосов
/ 11 октября 2011

Для запуска файлов Clojure из командной строки я использую псевдоним zhs, добавленный в .zshrc:

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 Ответ

3 голосов
/ 11 октября 2011

вам просто нужно указать имя скрипта, без ключа -i после clojure.main. В вашем случае clojure.main считает, что test.clj - это программа, которую нужно eval раньше (и она это делает), в то время как arg1 - скрипт для выполнения

См. Описание опции для clojure.main / main function

...