欢迎!请查看关于页面,了解更多有关该工作和如何进行的信息。
我正在尝试遵循这里的指南: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。
这很令人惊讶。我得到了不同的、更预期的错误(错误:向 bar/main 传递的参数数量不正确(1))。
你的deps.edn中有什么内容?如果你把它放在里面,改变main函数的签名以接受参数,如下所示:
deps.edn
(defn main [opts] (println "Hello, world"))
(并且也更新你的当前函数中的 printl 为 println), 有任何帮助吗?
printl
println