请在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

以下是堆栈跟踪:

;; Startup: "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: Unhandled REPL handler exception processing message {:op init-debugger, :nrepl.middleware.print/stream? 1, :nrepl.middleware.print/print 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}
Syntax error macroexpanding at (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
by

对于您遇到的这个错误,我感到很抱歉。我在 Google 上做了一些搜索,发现这个 issues: 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 安装的。

by
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, 混合模式)

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

AdoptOpenJDK

https://adoptopenjdk.net/

使用的安装程序位于此链接
https://adoptium.net/en-GB/temurin/releases/?version=11
by
谢谢你的提示。我决定通过添加 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
...