欢迎!有关如何使用本网站的更多信息,请参阅关于 页面。
我正在按照这里的指南:https://www.clojure.org/guides/deps_and_cli 运行一个简单的 Clojure 程序。
我的目录结构如下
└── test-project ├── deps.edn └── src └── bar.clj
,并且 bar.clj 看起来像这样
bar.clj
(ns bar) (defn main [] (printl "hello world"))
然而,当我运行 clj -X bar/main 时,我得到以下错误
clj -X bar/main
Exception in thread "main" java.io.FileNotFoundException: -X (No such file or directory) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(FileInputStream.java:195) at java.io.FileInputStream.<init>(FileInputStream.java:138) at java.io.FileInputStream.<init>(FileInputStream.java:93) at clojure.lang.Compiler.loadFile(Compiler.java:7570) at clojure.main$load_script.invokeStatic(main.clj:452) at clojure.main$script_opt.invokeStatic(main.clj:512) at clojure.main$script_opt.invoke(main.clj:507) at clojure.main$main.invokeStatic(main.clj:598) at clojure.main$main.doInvoke(main.clj:561) at clojure.lang.RestFn.applyTo(RestFn.java:137) at clojure.lang.Var.applyTo(Var.java:705) at clojure.main.main(main.java:37)
我错在哪里了?
您需要更新到支持 -X 的 clj 的较新版本。
这确实令人惊讶。我遇到了一个不同、更令人期待的错误(将错误的参数数(1)传递给:bar/main)。
将错误的参数数(1)传递给:bar/main
你在 `deps.edn` 中放什么?如果你放入 {},并改变你的 `main` 函数签名以接受参数,比如:
deps.edn
{}
(defn main [opts] (println "Hello, world"))
(以及更新当前函数中的 printl 为 println), 你有什么运气?
printl
println