ring and ring-jetty-adapter 1.12.1 fails to work with simple example from wiki
Closed this issue · 2 comments
ieugen commented
Hello,
I am working to use ring-jetty-adapter 1.12.1 on Java 21 https://github.com/ring-clojure/ring/wiki/Getting-Started
deps.edn
{:paths ["src"]
:deps {org.clojure/clojure {:mvn/version "1.11.2"}
ring/ring-core {:mvn/version "1.12.1"}
ring/ring-jetty-adapter {:mvn/version "1.12.1"}}}
jetty_example.clj
(ns jetty-example
(:require [ring.adapter.jetty :refer [run-jetty]]))
(defn handler []
{:status 200
:headers {"content-type" "text/plain"}
:body "Salutare națiune!"})
(run-jetty handler {:port 3000
:join? false})
*e
Evaluating the above gives me this:
; Evaluating file: jetty_example.clj
;
; Execution error (ClassNotFoundException) at java.net.URLClassLoader/findClass (URLClassLoader.java:445).
; jakarta.servlet.AsyncContext
; Evaluation of file jetty_example.clj failed: class clojure.lang.Compiler$CompilerException
clj꞉jetty-example꞉>
#error {
:cause "jakarta.servlet.AsyncContext"
:via
[{:type clojure.lang.Compiler$CompilerException
:message "Syntax error macroexpanding at (ring/util/jakarta/servlet.clj:1:1)."
:data #:clojure.error{:phase :execution, :line 1, :column 1, :source "ring/util/jakarta/servlet.clj"}
:at [clojure.lang.Compiler load "Compiler.java" 7665]}
{:type java.lang.ClassNotFoundException
:message "jakarta.servlet.AsyncContext"
:at [java.net.URLClassLoader findClass "URLClassLoader.java" 445]}]
:trace
[[java.net.URLClassLoader findClass "URLClassLoader.java" 445]
[clojure.lang.DynamicClassLoader findClass "DynamicClassLoader.java" 69]
[java.lang.ClassLoader loadClass "ClassLoader.java" 593]
[clojure.lang.DynamicClassLoader loadClass "DynamicClassLoader.java" 77]
[java.lang.ClassLoader loadClass "ClassLoader.java" 526]
[java.lang.Class forName0 "Class.java" -2]
[java.lang.Class forName "Class.java" 534]
[java.lang.Class forName "Class.java" 513]
[clojure.lang.RT classForName "RT.java" 2209]
[clojure.lang.RT classForNameNonLoading "RT.java" 2222]
[ring.util.jakarta.servlet$eval9099$loading__6789__auto____9100 invoke "servlet.clj" 1]
[ring.util.jakarta.servlet$eval9099 invokeStatic "servlet.clj" 1]
[ring.util.jakarta.servlet$eval9099 invoke "servlet.clj" 1]
[clojure.lang.Compiler eval "Compiler.java" 7194]
[clojure.lang.Compiler eval "Compiler.java" 7183]
[clojure.lang.Compiler load "Compiler.java" 7653]
[clojure.lang.RT loadResourceScript "RT.java" 381]
[clojure.lang.RT loadResourceScript "RT.java" 372]
[clojure.lang.RT load "RT.java" 459]
[clojure.lang.RT load "RT.java" 424]
[clojure.core$load$fn__6908 invoke "core.clj" 6162]
[clojure.core$load invokeStatic "core.clj" 6161]
[clojure.core$load doInvoke "core.clj" 6145]
[clojure.lang.RestFn invoke "RestFn.java" 408]
[clojure.core$load_one invokeStatic "core.clj" 5934]
[clojure.core$load_one invoke "core.clj" 5929]
[clojure.core$load_lib$fn__6850 invoke "core.clj" 5976]
[clojure.core$load_lib invokeStatic "core.clj" 5975]
[clojure.core$load_lib doInvoke "core.clj" 5954]
[clojure.lang.RestFn applyTo "RestFn.java" 142]
[clojure.core$apply invokeStatic "core.clj" 669]
[clojure.core$load_libs invokeStatic "core.clj" 6017]
[clojure.core$load_libs doInvoke "core.clj" 6001]
[clojure.lang.RestFn applyTo "RestFn.java" 137]
[clojure.core$apply invokeStatic "core.clj" 669]
[clojure.core$require invokeStatic "core.clj" 6039]
[clojure.core$require doInvoke "core.clj" 6039]
[clojure.lang.RestFn invoke "RestFn.java" 436]
[ring.adapter.jetty$eval9091$loading__6789__auto____9092 invoke "jetty.clj" 1]
[ring.adapter.jetty$eval9091 invokeStatic "jetty.clj" 1]
[ring.adapter.jetty$eval9091 invoke "jetty.clj" 1]
[clojure.lang.Compiler eval "Compiler.java" 7194]
[clojure.lang.Compiler eval "Compiler.java" 7183]
[clojure.lang.Compiler load "Compiler.java" 7653]
[clojure.lang.RT loadResourceScript "RT.java" 381]
[clojure.lang.RT loadResourceScript "RT.java" 372]
[clojure.lang.RT load "RT.java" 459]
[clojure.lang.RT load "RT.java" 424]
[clojure.core$load$fn__6908 invoke "core.clj" 6162]
[clojure.core$load invokeStatic "core.clj" 6161]
[clojure.core$load doInvoke "core.clj" 6145]
[clojure.lang.RestFn invoke "RestFn.java" 408]
[clojure.core$load_one invokeStatic "core.clj" 5934]
[clojure.core$load_one invoke "core.clj" 5929]
[clojure.core$load_lib$fn__6850 invoke "core.clj" 5976]
[clojure.core$load_lib invokeStatic "core.clj" 5975]
[clojure.core$load_lib doInvoke "core.clj" 5954]
[clojure.lang.RestFn applyTo "RestFn.java" 142]
[clojure.core$apply invokeStatic "core.clj" 669]
[clojure.core$load_libs invokeStatic "core.clj" 6017]
[clojure.core$load_libs doInvoke "core.clj" 6001]
[clojure.lang.RestFn applyTo "RestFn.java" 137]
[clojure.core$apply invokeStatic "core.clj" 669]
[clojure.core$require invokeStatic "core.clj" 6039]
[clojure.core$require doInvoke "core.clj" 6039]
[clojure.lang.RestFn invoke "RestFn.java" 408]
[jetty_example$eval9083$loading__6789__auto____9084 invoke "jetty_example.clj" 1]
[jetty_example$eval9083 invokeStatic "jetty_example.clj" 1]
[jetty_example$eval9083 invoke "jetty_example.clj" 1]
[clojure.lang.Compiler eval "Compiler.java" 7194]
[clojure.lang.Compiler eval "Compiler.java" 7183]
[clojure.lang.Compiler load "Compiler.java" 7653]
[user$eval9079 invokeStatic "NO_SOURCE_FILE" 1]
[user$eval9079 invoke "NO_SOURCE_FILE" 1]
[clojure.lang.Compiler eval "Compiler.java" 7194]
[clojure.lang.Compiler eval "Compiler.java" 7149]
[clojure.core$eval invokeStatic "core.clj" 3216]
[clojure.core$eval invoke "core.clj" 3212]
[nrepl.middleware.interruptible_eval$evaluate$fn__1359$fn__1360 invoke "interruptible_eval.clj" 87]
[clojure.lang.AFn applyToHelper "AFn.java" 152]
[clojure.lang.AFn applyTo "AFn.java" 144]
[clojure.core$apply invokeStatic "core.clj" 667]
[clojure.core$with_bindings_STAR_ invokeStatic "core.clj" 1990]
[clojure.core$with_bindings_STAR_ doInvoke "core.clj" 1990]
[clojure.lang.RestFn invoke "RestFn.java" 425]
[nrepl.middleware.interruptible_eval$evaluate$fn__1359 invoke "interruptible_eval.clj" 87]
[clojure.main$repl$read_eval_print__9206$fn__9209 invoke "main.clj" 437]
[clojure.main$repl$read_eval_print__9206 invoke "main.clj" 437]
[clojure.main$repl$fn__9215 invoke "main.clj" 458]
[clojure.main$repl invokeStatic "main.clj" 458]
[clojure.main$repl doInvoke "main.clj" 368]
[clojure.lang.RestFn invoke "RestFn.java" 1523]
[nrepl.middleware.interruptible_eval$evaluate invokeStatic "interruptible_eval.clj" 84]
[nrepl.middleware.interruptible_eval$evaluate invoke "interruptible_eval.clj" 56]
[nrepl.middleware.interruptible_eval$interruptible_eval$fn__1392$fn__1396 invoke "interruptible_eval.clj" 152]
[clojure.lang.AFn run "AFn.java" 22]
[nrepl.middleware.session$session_exec$main_loop__1462$fn__1466 invoke "session.clj" 218]
[nrepl.middleware.session$session_exec$main_loop__1462 invoke "session.clj" 217]
[clojure.lang.AFn run "AFn.java" 22]
[java.lang.Thread run "Thread.java" 1583]]}
System:
$ clj --version
Clojure CLI version 1.11.2.1446
java -version
openjdk version "21.0.3" 2024-04-16 LTS
OpenJDK Runtime Environment Temurin-21.0.3+9 (build 21.0.3+9-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.3+9 (build 21.0.3+9-LTS, mixed mode, sharing)
ieugen commented
It seems the older versions are also failing with jdk 21 and 17 .
I tried 1.11.0, 1.10.0, 1.9.6 and 1.8.0 .
The error switches to javax.servlet.AsyncContext.
ieugen commented
it was an issue with my system.
After a reboot and OS reinstall things are working.