lyh*_*kia 1 dependencies clojure read-eval-print-loop
我是 Clojure 的新手,试图用函数调试我的程序trace。
我在 REPL 中试过这个:
(require '[clojure.tools.trace :as trace])
Run Code Online (Sandbox Code Playgroud)
但它抛出一个异常:
Execution error (FileNotFoundException) at user/eval199 (REPL:1).
Could not locate clojure/tools/trace__init.class, clojure/tools/trace.clj or clojure/tools/trace.cljc on classpath.
Run Code Online (Sandbox Code Playgroud)
*e 是这样说的:
#error {
:cause "Could not locate clojure/tools/trace__init.class, clojure/tools/trace.clj or clojure/tools/trace.cljc on classpath."
:via
[{:type java.io.FileNotFoundException
:message "Could not locate clojure/tools/trace__init.class, clojure/tools/trace.clj or clojure/tools/trace.cljc on classpath."
:at [clojure.lang.RT load "RT.java" 462]}]
:trace
[[clojure.lang.RT load "RT.java" 462]
[clojure.lang.RT load "RT.java" 424]
[clojure.core$load$fn__6839 invoke "core.clj" 6126]
[clojure.core$load invokeStatic "core.clj" 6125]
[clojure.core$load doInvoke "core.clj" 6109]
[clojure.lang.RestFn invoke "RestFn.java" 408]
[clojure.core$load_one invokeStatic "core.clj" 5908]
[clojure.core$load_one invoke "core.clj" 5903]
[clojure.core$load_lib$fn__6780 invoke "core.clj" 5948]
[clojure.core$load_lib invokeStatic "core.clj" 5947]
[clojure.core$load_lib doInvoke "core.clj" 5928]
[clojure.lang.RestFn applyTo "RestFn.java" 142]
[clojure.core$apply invokeStatic "core.clj" 667]
[clojure.core$load_libs invokeStatic "core.clj" 5985]
[clojure.core$load_libs doInvoke "core.clj" 5969]
[clojure.lang.RestFn applyTo "RestFn.java" 137]
[clojure.core$apply invokeStatic "core.clj" 667]
[clojure.core$require invokeStatic "core.clj" 6007]
[clojure.core$require doInvoke "core.clj" 6007]
[clojure.lang.RestFn invoke "RestFn.java" 408]
[user$eval193 invokeStatic "NO_SOURCE_FILE" 1]
[user$eval193 invoke "NO_SOURCE_FILE" 1]
[clojure.lang.Compiler eval "Compiler.java" 7177]
[clojure.lang.Compiler eval "Compiler.java" 7132]
[clojure.core$eval invokeStatic "core.clj" 3214]
[clojure.core$eval invoke "core.clj" 3210]
[clojure.main$repl$read_eval_print__9086$fn__9089 invoke "main.clj" 437]
[clojure.main$repl$read_eval_print__9086 invoke "main.clj" 437]
[clojure.main$repl$fn__9095 invoke "main.clj" 458]
[clojure.main$repl invokeStatic "main.clj" 458]
[clojure.main$repl_opt invokeStatic "main.clj" 522]
[clojure.main$main invokeStatic "main.clj" 667]
[clojure.main$main doInvoke "main.clj" 616]
[clojure.lang.RestFn invoke "RestFn.java" 397]
[clojure.lang.AFn applyToHelper "AFn.java" 152]
[clojure.lang.RestFn applyTo "RestFn.java" 132]
[clojure.lang.Var applyTo "Var.java" 705]
[clojure.main main "main.java" 40]]}
Run Code Online (Sandbox Code Playgroud)
我在 Github 上搜索了clojure.tools.trace的文档。
它说您需要导入依赖项,但依赖项信息是针对 Clojure CLI、Leiningen 或 Maven 的,而不是针对 clojure 中的 REPL。
(当我在 clojure 中说 REPL 时,我的意思是clj,对于模糊的描述,抱歉)
所以我就卡在这里了。谁能告诉我如何解决这个问题以及发生了什么?
由于您正在使用clj(Clojure CLI),您需要将clojure.tools.trace库添加到您的deps.edn文件中:
seanc@DESKTOP-30ICA76:~/clojure$ mkdir lyhokia
seanc@DESKTOP-30ICA76:~/clojure$ cd lyhokia/
seanc@DESKTOP-30ICA76:~/clojure/lyhokia$ vi deps.edn
<add the library>
seanc@DESKTOP-30ICA76:~/clojure/lyhokia$ cat deps.edn
{:deps {org.clojure/tools.trace {:mvn/version "0.7.10"}}}
seanc@DESKTOP-30ICA76:~/clojure/lyhokia$ clj
Clojure 1.10.1
user=> (require '[clojure.tools.trace :as trace])
nil
user=> (trace/trace (* 1 2 3))
TRACE: 6
6
user=>
Run Code Online (Sandbox Code Playgroud)