Gần đây tôi đã bắt đầu với clojure và tôi đang sử dụng leiningen để tạo một dự án nhỏ. Tôi đang gặp khó khăn trong việc nhận được leiningen để hành xử với các đối số dòng lệnh. Sau đây là tôi src/project/core.clj
đối số dòng lệnh với leiningen
(ns project.core
(:gen-class))
(defn -main [& args]
(println (apply str args)))
và 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"]])
của tôi Bây giờ khi tôi chạy lein run arg1 arg2
, nó mang lại cho tôi lỗi này:
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
Tuy nhiên, nếu tôi làm một lein uberjar
và sau đó làm java -jar project-1.0.0-SNAPSHOT-standalone.jar arg1 arg2
, tôi nhận được kết quả chính xác.
arg1arg2
Thật không thoải mái khi phải tạo uberjar để chạy nó mỗi khi phát triển, có cách nào tốt hơn không?
thử chạy lein project.core arg1 arg2 – PheliX
@PheliX, yep, đã đưa ra một số khách hàng tiềm năng, nó cung cấp 'class project.corearg1arg2', nhưng uberjar cho' arg1arg2 '... trông giống như một số tiến bộ, nhưng không hoàn toàn có thể sử dụng được. Điều đó, hoặc tôi thiếu một cái gì đó –