2024 Clojure 状态调查中分享你的想法!

欢迎!请参见关于页面了解更多此平台的信息。

0
CIDER

大家好,

我开始学习 Clojure 使用“Clojure for the Brave and True”这本书。
我正在尝试使用 emacs 和 cider 运行第一个代码。

每次我运行
M-x cider-jack-in

来启动 repl。启动后我会得到一个非常长的错误堆栈跟踪。
通过我所做的分析,这个错误看起来是

由于 Caused by: java.lang.ClassNotFoundException: jdk.javadoc.doclet.Doclet

我在使用
jdk 11.0.14
clojure 1.11.1
cider 1.6.0

以下是堆栈跟踪

;; 启动: "c:/Users/nyemi/Documents/clojure/lein.bat" update-in :dependencies conj ^"[nrepl/nrepl \^"1.0.0\^"]^" -- update-in :plugins conj ^"[cider/cider-nrepl \^"0.29.0\^"]^" -- repl :headless :host localhost
ERROR: 尚未处理的 REPL 处理器异常处理消息 {:op init-debugger, :nrepl.middleware.print/stream? 1, :nrepl.middleware.print/stream cider.nrepl.pprint/pprint, :nrepl.middleware.print/quota 1048576, :nrepl.middleware.print/buffer-size 4096, :nrepl.middleware.print/options {:right-margin 70}, :session d8f7ce4f-e479-4c00-a8c3-2bc4f2bb3257, :id 6}
解析宏时发生语法错误(在 cider/nrepl/inlined/deps/orchard/v0v11v0/orchard/java/parser.clj:1:1)。

at clojure.lang.Compiler.load(Compiler.java:7665)
at clojure.lang.RT.loadResourceScript(RT.java:381)
at clojure.lang.RT.loadResourceScript(RT.java:372)
at clojure.lang.RT.load(RT.java:459)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6908.invoke(core.clj:6161)
at clojure.core$load.invokeStatic(core.clj:6160)
at clojure.core$load.doInvoke(core.clj:6144)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5933)
at clojure.core$load_one.invoke(core.clj:5928)
at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
at clojure.core$load_lib.invokeStatic(core.clj:5974)
at clojure.core$load_lib.doInvoke(core.clj:5953)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$load_libs.invokeStatic(core.clj:6016)
at clojure.core$load_libs.doInvoke(core.clj:6000)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$require.invokeStatic(core.clj:6038)
at clojure.core$require.doInvoke(core.clj:6038)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3714)
at clojure.lang.Compiler$BodyExpr.eval(Compiler.java:6151)
at clojure.lang.Compiler$IfExpr.eval(Compiler.java:2741)
at clojure.lang.Compiler$DefExpr.eval(Compiler.java:457)
at clojure.lang.Compiler.eval(Compiler.java:7199)
at clojure.lang.Compiler.load(Compiler.java:7653)
at clojure.lang.RT.loadResourceScript(RT.java:381)
at clojure.lang.RT.loadResourceScript(RT.java:372)
at clojure.lang.RT.load(RT.java:459)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6908.invoke(core.clj:6161)
at clojure.core$load.invokeStatic(core.clj:6160)
at clojure.core$load.doInvoke(core.clj:6144)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5933)
at clojure.core$load_one.invoke(core.clj:5928)
at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
at clojure.core$load_lib.invokeStatic(core.clj:5974)
at clojure.core$load_lib.doInvoke(core.clj:5953)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$load_libs.invokeStatic(core.clj:6016)
at clojure.core$load_libs.doInvoke(core.clj:6000)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$require.invokeStatic(core.clj:6038)
at clojure.core$require.doInvoke(core.clj:6038)
at clojure.lang.RestFn.invoke(RestFn.java:619)
at cider.nrepl.inlined.deps.orchard.v0v11v0.orchard.info$eval4201$loading__6789__auto____4202.invoke(info.clj:1)
at cider.nrepl.inlined.deps.orchard.v0v11v0.orchard.info$eval4201.invokeStatic(info.clj:1)
at cider.nrepl.inlined.deps.orchard.v0v11v0.orchard.info$eval4201.invoke(info.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:7194)
at clojure.lang.Compiler.eval(Compiler.java:7183)
at clojure.lang.Compiler.load(Compiler.java:7653)
at clojure.lang.RT.loadResourceScript(RT.java:381)
at clojure.lang.RT.loadResourceScript(RT.java:372)
at clojure.lang.RT.load(RT.java:459)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6908.invoke(core.clj:6161)
at clojure.core$load.invokeStatic(core.clj:6160)
at clojure.core$load.doInvoke(core.clj:6144)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5933)
at clojure.core$load_one.invoke(core.clj:5928)
at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
at clojure.core$load_lib.invokeStatic(core.clj:5974)
at clojure.core$load_lib.doInvoke(core.clj:5953)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$load_libs.invokeStatic(core.clj:6016)
at clojure.core$load_libs.doInvoke(core.clj:6000)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$require.invokeStatic(core.clj:6038)
at clojure.core$require.doInvoke(core.clj:6038)
at clojure.lang.RestFn.invoke(RestFn.java:703)
at cider.nrepl.inlined.deps.haystack.v0v0v3.haystack.analyzer$eval2880$loading__6789__auto____2881.invoke(analyzer.clj:1)
at cider.nrepl.inlined.deps.haystack.v0v0v3.haystack.analyzer$eval2880.invokeStatic(analyzer.clj:1)
at cider.nrepl.inlined.deps.haystack.v0v0v3.haystack.analyzer$eval2880.invoke(analyzer.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:7194)
at clojure.lang.Compiler.eval(Compiler.java:7183)
at clojure.lang.Compiler.load(Compiler.java:7653)
at clojure.lang.RT.loadResourceScript(RT.java:381)
at clojure.lang.RT.loadResourceScript(RT.java:372)
at clojure.lang.RT.load(RT.java:459)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6908.invoke(core.clj:6161)
at clojure.core$load.invokeStatic(core.clj:6160)
at clojure.core$load.doInvoke(core.clj:6144)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5933)
at clojure.core$load_one.invoke(core.clj:5928)
at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
at clojure.core$load_lib.invokeStatic(core.clj:5974)
at clojure.core$load_lib.doInvoke(core.clj:5953)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$load_libs.invokeStatic(core.clj:6016)
at clojure.core$load_libs.doInvoke(core.clj:6000)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$require.invokeStatic(core.clj:6038)
at clojure.core$require.doInvoke(core.clj:6038)
at clojure.lang.RestFn.invoke(RestFn.java:1289)
at cider.nrepl.middleware.debug$eval1742$loading__6789__auto____1743.invoke(debug.clj:1)
at cider.nrepl.middleware.debug$eval1742.invokeStatic(debug.clj:1)
at cider.nrepl.middleware.debug$eval1742.invoke(debug.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:7194)
at clojure.lang.Compiler.eval(Compiler.java:7183)
at clojure.lang.Compiler.load(Compiler.java:7653)
at clojure.lang.RT.loadResourceScript(RT.java:381)
at clojure.lang.RT.loadResourceScript(RT.java:372)
at clojure.lang.RT.load(RT.java:459)
at clojure.lang.RT.load(RT.java:424)
at clojure.core$load$fn__6908.invoke(core.clj:6161)
at clojure.core$load.invokeStatic(core.clj:6160)
at clojure.core$load.doInvoke(core.clj:6144)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5933)
at clojure.core$load_one.invoke(core.clj:5928)
at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
at clojure.core$load_lib.invokeStatic(core.clj:5974)
at clojure.core$load_lib.doInvoke(core.clj:5953)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$load_libs.invokeStatic(core.clj:6016)
at clojure.core$load_libs.doInvoke(core.clj:6000)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:669)
at clojure.core$require.invokeStatic(core.clj:6038)
at clojure.core$require.doInvoke(core.clj:6038)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at cider.nrepl$handler_future$fn__1130$fn__1131.invoke(nrepl.clj:53)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$with_bindings_STAR_.invokeStatic(core.clj:1990)
at clojure.core$with_bindings_STAR_.doInvoke(core.clj:1990)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at cider.nrepl$handler_future$fn__1130.invoke(nrepl.clj:52)
at clojure.lang.Delay.deref(Delay.java:42)
at clojure.core$deref.invokeStatic(core.clj:2337)
at clojure.core$deref.invoke(core.clj:2323)
at cider.nrepl$wrap_debug$fn__1213.invoke(nrepl.clj:163)
at nrepl.middleware$wrap_conj_descriptor$fn__10438.invoke(middleware.clj:16)
at cider.nrepl$wrap_enlighten$fn__1221.invoke(nrepl.clj:190)
at nrepl.middleware$wrap_conj_descriptor$fn__10438.invoke(middleware.clj:16)
at nrepl.middleware.load_file$wrap_load_file$fn__11240.invoke(load_file.clj:81)
at nrepl.middleware$wrap_conj_descriptor$fn__10438.invoke(middleware.clj:16)
at cider.nrepl$wrap_content_type$fn__1171.invoke(nrepl.clj:107)
at nrepl.middleware$wrap_conj_descriptor$fn__10438.invoke(middleware.clj:16)
at nrepl.middleware.session$add_stdin$fn__10848.invoke(session.clj:379)
at nrepl.middleware$wrap_conj_descriptor$fn__10438.invoke(middleware.clj:16)
at cider.nrepl$wrap_inspect$fn__1247.invoke(nrepl.clj:227)
at nrepl.middleware$wrap_conj_descriptor$fn__10438.invoke(middleware.clj:16)
at nrepl.middleware.caught$wrap_caught$fn__10673.invoke(caught.clj:97)
at nrepl.middleware$wrap_conj_descriptor$fn__10438.invoke(middleware.clj:16)
at cider.nrepl$wrap_profile$fn__1279.invoke(nrepl.clj:343)
at nrepl.middleware$wrap_conj_descriptor$fn__10438.invoke(middleware.clj:16)
at nrepl.middleware.print$wrap_print$fn__10644.invoke(print.clj:234)
at nrepl.middleware$wrap_conj_descriptor$fn__10438.invoke(middleware.clj:16)
at cider.nrepl$wrap_undef$fn__1343.invoke(nrepl.clj:531)
at nrepl.middleware$wrap_conj_descriptor$fn__10438.invoke(middleware.clj:16)
at cider.nrepl$wrap_tracker$fn__1335.invoke(nrepl.clj:520)
at nrepl.middleware$wrap_conj_descriptor$fn__10438.invoke(middleware.clj:16)
at nrepl.middleware.lookup$wrap_lookup$fn__11266.invoke(lookup.clj:52)
at nrepl.middleware$wrap_conj_descriptor$fn__10438.invoke(middleware.clj:16)
at nrepl.middleware.session$session$fn__10835.invoke(session.clj:325)
at nrepl.middleware$wrap_conj_descriptor$fn__10438.invoke(middleware.clj:16)
at nrepl.server$default_handler$fn__11337.invoke(server.clj:141)
at nrepl.server$handle_STAR_.invokeStatic(server.clj:24)
at nrepl.server$handle_STAR_.invoke(server.clj:21)
at nrepl.server$handle$fn__11305.invoke(server.clj:41)
at clojure.core$binding_conveyor_fn$fn__5823.invoke(core.clj:2047)
at clojure.lang.AFn.call(AFn.java:18)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)

Caused by: java.lang.ClassNotFoundException: jdk.javadoc.doclet.Doclet

at java.base/java.net.URLClassLoader.findClass(Unknown Source)
at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:69)

1 答案

0

很抱歉你遇到了这个错误。我进行了一点点谷歌搜索,找到了这个问题:https://github.com/clojure-emacs/orchard/issues/117

似乎某些 JDK 将 javadoc 类删除了。CIDER(通过其依赖项 orchard)使用这些类来解析 Java 类。

你能告诉我java -version的输出结果以及你是如何安装Java的吗?比如,我的输出结果是

❯ java -version
openjdk version "17.0.1" 2021-10-19 LTS
OpenJDK Runtime Environment Zulu17.30+15-CA (build 17.0.1+12-LTS)
OpenJDK 64-Bit Server VM Zulu17.30+15-CA (build 17.0.1+12-LTS, mixed mode, sharing)

我使用sdkman安装的。

java -version
openjdk版本 "11.0.14" 2022-01-18
OpenJDK运行环境 Temurin-11.0.14+9 (构建 11.0.14+9)
OpenJDK 64位服务器VM Temurin-11.0.14+9 (构建 11.0.14+9, 混合模式)

我使用的是64位的Windows笔记本电脑。
我从这个链接下载了Open JDK

AdoptOpenJDK

https://adoptopenjdk.net/

使用的安装器位于此链接
https://adoptium.net/en-GB/temurin/releases/?version=11
感谢你给了我提示。我决定通过添加JAVA_CMD环境变量来更改lein使用的jdk。  C:\Program Files\Java\jdk1.8.0_231\bin\java.  (已切换到jdk 8而不是默认的jdk 11)。现在它正在正常运行。这样我可以继续学习。我仍想为生产应用程序使用jdk 11,所以我将来还得修复这个问题。

我发现在如何切换lein使用的jdk的这个链接很有帮助。

https://gist.github.com/camsaul/c982019fd915510677236cd4b720a583
...