最近私はclojureを使い始めました。私は小さなプロジェクトを作成するためにleiningenを使用しています。私はコマンドライン引数で動作するようにleiningenを取得する際に問題を抱えています。以下は私のsrc/project/core.clj
leiningenのコマンドライン引数
(ns project.core
(:gen-class))
(defn -main [& args]
(println (apply str args)))
であると私はlein run arg1 arg2
を実行したときに、私のproject.clj
(defproject project "1.0.0-SNAPSHOT"
:description "FIXME: write"
:main project.core
:dependencies [[org.clojure/clojure "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]])
は今、それは私に、このエラーを与える:しかし
Exception in thread "main" java.lang.Exception: Unable to resolve symbol: arg1 in this context (NO_SOURCE_FILE:1)
at clojure.lang.Compiler.analyze(Compiler.java:5205)
at clojure.lang.Compiler.analyze(Compiler.java:5151)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3057)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:5371)
at clojure.lang.Compiler.analyze(Compiler.java:5190)
at clojure.lang.Compiler.analyze(Compiler.java:5151)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:4670)
at clojure.lang.Compiler$FnMethod.parse(Compiler.java:4328)
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3173)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:5367)
at clojure.lang.Compiler.analyze(Compiler.java:5190)
at clojure.lang.Compiler.eval(Compiler.java:5421)
at clojure.lang.Compiler.eval(Compiler.java:5415)
at clojure.lang.Compiler.eval(Compiler.java:5391)
at clojure.core$eval.invoke(core.clj:2382)
at clojure.main$eval_opt.invoke(main.clj:235)
at clojure.main$initialize.invoke(main.clj:254)
at clojure.main$null_opt.invoke(main.clj:279)
at clojure.main$main.doInvoke(main.clj:354)
at clojure.lang.RestFn.invoke(RestFn.java:422)
at clojure.lang.Var.invoke(Var.java:369)
at clojure.lang.AFn.applyToHelper(AFn.java:165)
at clojure.lang.Var.applyTo(Var.java:482)
at clojure.main.main(main.java:37)
Caused by: java.lang.Exception: Unable to resolve symbol: arg1 in this context
at clojure.lang.Compiler.resolveIn(Compiler.java:5677)
at clojure.lang.Compiler.resolve(Compiler.java:5621)
at clojure.lang.Compiler.analyzeSymbol(Compiler.java:5584)
at clojure.lang.Compiler.analyze(Compiler.java:5172)
... 23 more
、私はその後、lein uberjar
を行い、場合java -jar project-1.0.0-SNAPSHOT-standalone.jar arg1 arg2
を実行すると、正しい出力が得られます。
arg1arg2
開発中に毎回実行するためにuberjarを作成する必要はありませんが、より良い方法はありますか? lein-runから
私はいくつかの鉛を与えた、それは 'class project.corearg1arg2'を与える@PheliX、うん、project.core arg1 arg2 – PheliX
を実行しようとするが、uberjarは' arg1arg2 '...いくつかの進歩のように見えますが、それでも十分に利用可能ではありません。それは、または何かが欠けている –