- 
                Notifications
    
You must be signed in to change notification settings  - Fork 180
 
Description
Expected behavior
Setting up an embedded nREPL server using:
(nrepl-server/start-server :port port :handler (nrepl-handler))should work (with nrepl-handler defined as in the docs).
Actual behavior
Upon connecting to the nREPL server from CIDER, the stack trace below is seen, and is repeated after every interaction. To avoid this, the application (which is shipped as an executable Jar) must be launched from the command line with an -add-modules option as follows:
java --add-modules jdk.javadoc -jar my-app.jar
This is not necessary when running under JDK 10 or earlier. Since many of my users are non-programmers who are not familiar with the command line (and certainly not Java options), I would very much like to be able to continue allowing them to launch the program by double-clicking the Jar file, but I can’t see any way to do that under JDK 11 or later with cider-nrepl as it stands. Is there any hope of removing this module dependency, or having the handler gracefully offer reduced functionality when it is unavailable?
Here is the stacktrace:
ERROR: Unhandled REPL handler exception processing message {:nrepl.middleware.print/stream? 1, :nrepl.middleware.print/print cider.nrepl.pprint/pprint, :nrepl.middleware.print/quota 1048576, :nrepl.middleware.print/options {:right-margin 70}, :op init-debugger, :session c5bdcb5a-33bc-4ab5-994c-78fdb660d505, :id 6}
Syntax error compiling at (cider/nrepl/inlined_deps/orchard/v0v5v1/orchard/java/parser.clj:1:1).
	at clojure.lang.Compiler.load(Compiler.java:7648)
	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__6839.invoke(core.clj:6126)
	at clojure.core$load.invokeStatic(core.clj:6125)
	at clojure.core$load.doInvoke(core.clj:6109)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.core$load_one.invokeStatic(core.clj:5908)
	at clojure.core$load_one.invoke(core.clj:5903)
	at clojure.core$load_lib$fn__6780.invoke(core.clj:5948)
	at clojure.core$load_lib.invokeStatic(core.clj:5947)
	at clojure.core$load_lib.doInvoke(core.clj:5928)
	at clojure.lang.RestFn.applyTo(RestFn.java:142)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$load_libs.invokeStatic(core.clj:5985)
	at clojure.core$load_libs.doInvoke(core.clj:5969)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$require.invokeStatic(core.clj:6007)
	at clojure.core$require.doInvoke(core.clj:6007)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3702)
	at clojure.lang.Compiler$BodyExpr.eval(Compiler.java:6134)
	at clojure.lang.Compiler$IfExpr.eval(Compiler.java:2729)
	at clojure.lang.Compiler$DefExpr.eval(Compiler.java:457)
	at clojure.lang.Compiler.eval(Compiler.java:7182)
	at clojure.lang.Compiler.load(Compiler.java:7636)
	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__6839.invoke(core.clj:6126)
	at clojure.core$load.invokeStatic(core.clj:6125)
	at clojure.core$load.doInvoke(core.clj:6109)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.core$load_one.invokeStatic(core.clj:5908)
	at clojure.core$load_one.invoke(core.clj:5903)
	at clojure.core$load_lib$fn__6780.invoke(core.clj:5948)
	at clojure.core$load_lib.invokeStatic(core.clj:5947)
	at clojure.core$load_lib.doInvoke(core.clj:5928)
	at clojure.lang.RestFn.applyTo(RestFn.java:142)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$load_libs.invokeStatic(core.clj:5985)
	at clojure.core$load_libs.doInvoke(core.clj:5969)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$require.invokeStatic(core.clj:6007)
	at clojure.core$require.doInvoke(core.clj:6007)
	at clojure.lang.RestFn.invoke(RestFn.java:703)
	at cider.nrepl.inlined_deps.orchard.v0v5v1.orchard.info$eval1469$loading__6721__auto____1470.invoke(info.clj:1)
	at cider.nrepl.inlined_deps.orchard.v0v5v1.orchard.info$eval1469.invokeStatic(info.clj:1)
	at cider.nrepl.inlined_deps.orchard.v0v5v1.orchard.info$eval1469.invoke(info.clj:1)
	at clojure.lang.Compiler.eval(Compiler.java:7177)
	at clojure.lang.Compiler.eval(Compiler.java:7166)
	at clojure.lang.Compiler.load(Compiler.java:7636)
	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__6839.invoke(core.clj:6126)
	at clojure.core$load.invokeStatic(core.clj:6125)
	at clojure.core$load.doInvoke(core.clj:6109)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.core$load_one.invokeStatic(core.clj:5908)
	at clojure.core$load_one.invoke(core.clj:5903)
	at clojure.core$load_lib$fn__6780.invoke(core.clj:5948)
	at clojure.core$load_lib.invokeStatic(core.clj:5947)
	at clojure.core$load_lib.doInvoke(core.clj:5928)
	at clojure.lang.RestFn.applyTo(RestFn.java:142)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$load_libs.invokeStatic(core.clj:5985)
	at clojure.core$load_libs.doInvoke(core.clj:5969)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$require.invokeStatic(core.clj:6007)
	at clojure.core$require.doInvoke(core.clj:6007)
	at clojure.lang.RestFn.invoke(RestFn.java:1096)
	at cider.nrepl.middleware.stacktrace$eval1390$loading__6721__auto____1391.invoke(stacktrace.clj:1)
	at cider.nrepl.middleware.stacktrace$eval1390.invokeStatic(stacktrace.clj:1)
	at cider.nrepl.middleware.stacktrace$eval1390.invoke(stacktrace.clj:1)
	at clojure.lang.Compiler.eval(Compiler.java:7177)
	at clojure.lang.Compiler.eval(Compiler.java:7166)
	at clojure.lang.Compiler.load(Compiler.java:7636)
	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__6839.invoke(core.clj:6126)
	at clojure.core$load.invokeStatic(core.clj:6125)
	at clojure.core$load.doInvoke(core.clj:6109)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.core$load_one.invokeStatic(core.clj:5908)
	at clojure.core$load_one.invoke(core.clj:5903)
	at clojure.core$load_lib$fn__6780.invoke(core.clj:5948)
	at clojure.core$load_lib.invokeStatic(core.clj:5947)
	at clojure.core$load_lib.doInvoke(core.clj:5928)
	at clojure.lang.RestFn.applyTo(RestFn.java:142)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$load_libs.invokeStatic(core.clj:5985)
	at clojure.core$load_libs.doInvoke(core.clj:5969)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$require.invokeStatic(core.clj:6007)
	at clojure.core$require.doInvoke(core.clj:6007)
	at clojure.lang.RestFn.invoke(RestFn.java:1523)
	at cider.nrepl.middleware.debug$eval1069$loading__6721__auto____1070.invoke(debug.clj:1)
	at cider.nrepl.middleware.debug$eval1069.invokeStatic(debug.clj:1)
	at cider.nrepl.middleware.debug$eval1069.invoke(debug.clj:1)
	at clojure.lang.Compiler.eval(Compiler.java:7177)
	at clojure.lang.Compiler.eval(Compiler.java:7166)
	at clojure.lang.Compiler.load(Compiler.java:7636)
	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__6839.invoke(core.clj:6126)
	at clojure.core$load.invokeStatic(core.clj:6125)
	at clojure.core$load.doInvoke(core.clj:6109)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.core$load_one.invokeStatic(core.clj:5908)
	at clojure.core$load_one.invoke(core.clj:5903)
	at clojure.core$load_lib$fn__6780.invoke(core.clj:5948)
	at clojure.core$load_lib.invokeStatic(core.clj:5947)
	at clojure.core$load_lib.doInvoke(core.clj:5928)
	at clojure.lang.RestFn.applyTo(RestFn.java:142)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$load_libs.invokeStatic(core.clj:5985)
	at clojure.core$load_libs.doInvoke(core.clj:5969)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$require.invokeStatic(core.clj:6007)
	at clojure.core$require.doInvoke(core.clj:6007)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at cider.nrepl$run_deferred_handler$fn__611.invoke(nrepl.clj:38)
	at clojure.lang.Delay.deref(Delay.java:42)
	at clojure.core$deref.invokeStatic(core.clj:2320)
	at clojure.core$deref.invoke(core.clj:2306)
	at cider.nrepl$wrap_debug$fn__679.invoke(nrepl.clj:136)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at cider.nrepl$wrap_enlighten$fn__687.invoke(nrepl.clj:162)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at cider.nrepl$wrap_content_type$fn__637.invoke(nrepl.clj:82)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at nrepl.middleware.caught$wrap_caught$fn__24670.invoke(caught.clj:97)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at cider.nrepl$wrap_refresh$fn__753.invoke(nrepl.clj:336)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at cider.nrepl$wrap_profile$fn__745.invoke(nrepl.clj:299)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at cider.nrepl$wrap_info$fn__703.invoke(nrepl.clj:180)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at cider.nrepl$wrap_clojuredocs$fn__833.invoke(nrepl.clj:481)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at cider.nrepl$wrap_out$fn__737.invoke(nrepl.clj:290)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at cider.nrepl$wrap_version$fn__817.invoke(nrepl.clj:456)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at cider.nrepl$wrap_undef$fn__809.invoke(nrepl.clj:448)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at cider.nrepl$wrap_tracker$fn__801.invoke(nrepl.clj:437)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at nrepl.middleware.print$wrap_print$fn__24641.invoke(print.clj:234)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at cider.nrepl$wrap_macroexpand$fn__721.invoke(nrepl.clj:243)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at cider.nrepl$wrap_ns$fn__729.invoke(nrepl.clj:256)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at nrepl.middleware.session$session$fn__24834.invoke(session.clj:272)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at cider.nrepl$wrap_xref$fn__825.invoke(nrepl.clj:466)
	at nrepl.middleware$wrap_conj_descriptor$fn__24441.invoke(middleware.clj:16)
	at clojure.lang.Var.invoke(Var.java:384)
	at nrepl.server$handle_STAR_.invokeStatic(server.clj:18)
	at nrepl.server$handle_STAR_.invoke(server.clj:15)
	at nrepl.server$handle$fn__24865.invoke(server.clj:27)
	at clojure.core$binding_conveyor_fn$fn__5754.invoke(core.clj:2030)
	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)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	at clojure.lang.DynamicClassLoader.loadClass(DynamicClassLoader.java:77)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Unknown Source)
	at clojure.lang.RT.classForName(RT.java:2211)
	at clojure.lang.RT.classForNameNonLoading(RT.java:2224)
	at cider.nrepl.inlined_deps.orchard.v0v5v1.orchard.java.parser$eval1948$loading__6721__auto____1949.invoke(parser.clj:1)
	at cider.nrepl.inlined_deps.orchard.v0v5v1.orchard.java.parser$eval1948.invokeStatic(parser.clj:1)
	at cider.nrepl.inlined_deps.orchard.v0v5v1.orchard.java.parser$eval1948.invoke(parser.clj:1)
	at clojure.lang.Compiler.eval(Compiler.java:7177)
	at clojure.lang.Compiler.eval(Compiler.java:7166)
	at clojure.lang.Compiler.load(Compiler.java:7636)
	... 182 more
Steps to reproduce the problem
Add an embedded nREPL server to a Clojure project using the method described at the top of the issue, compile that project to an überjar, then attempt to run it under JDK 11 and connect to the nREPL server using CIDER.
Environment & Version information
cider-nrepl version
E.g. 0.22.3
Java version
11.0.4, OpenJDK 64-Bit Server VM, Amazon.com Inc.
Operating system
macOS Mojave 10.14.6