-
-
Notifications
You must be signed in to change notification settings - Fork 637
Closed
Description
Actual behavior (the bug)
A minimal example like this:
fun main() {
val app = Javalin.create {
it.routes.get("/") { ctx -> ctx.result("Hello World") }
}
.start(7070)
}and with minimal dependencies
implementation("io.javalin:javalin:7.0.0-alpha.2")
implementation("org.slf4j:slf4j-simple:2.0.17")throws a 500 after receiving the first request and emits this exception:
[JettyServerThreadPool-33] ERROR io.javalin.Javalin - Fatal error occurred while servicing http-request
java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
at io.javalin.json.JavalinJackson.<init>(JavalinJackson.kt:30)
at io.javalin.config.JavalinState.jsonMapper$lambda$0(JavalinState.kt:74)
at kotlin.UnsafeLazyImpl.getValue(Lazy.kt:100)
at io.javalin.http.servlet.JavalinServletContextConfig$Companion.of(JavalinServletContext.kt:61)
at io.javalin.http.servlet.JavalinServlet.servletContextConfig_delegate$lambda$0(JavalinServlet.kt:27)
at kotlin.UnsafeLazyImpl.getValue(Lazy.kt:100)
at io.javalin.http.servlet.JavalinServlet.getServletContextConfig(JavalinServlet.kt:27)
at io.javalin.http.servlet.JavalinServlet.handle(JavalinServlet.kt:36)
at io.javalin.http.servlet.JavalinServlet.service(JavalinServlet.kt:30)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
at io.javalin.jetty.JavalinJettyServlet.service(JavalinJettyServlet.kt:50)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
at org.eclipse.jetty.ee10.servlet.ServletHolder.handle(ServletHolder.java:752)
at org.eclipse.jetty.ee10.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1620)
at org.eclipse.jetty.ee10.servlet.ServletHandler$MappedServlet.handle(ServletHandler.java:1554)
at org.eclipse.jetty.ee10.servlet.ServletChannel.dispatch(ServletChannel.java:807)
at org.eclipse.jetty.ee10.servlet.ServletChannel.handle(ServletChannel.java:442)
at org.eclipse.jetty.ee10.servlet.ServletHandler.handle(ServletHandler.java:469)
at org.eclipse.jetty.ee10.servlet.SessionHandler.handle(SessionHandler.java:719)
at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1220)
at org.eclipse.jetty.server.Handler$Wrapper.handle(Handler.java:794)
at org.eclipse.jetty.server.handler.EventsHandler.handle(EventsHandler.java:81)
at org.eclipse.jetty.server.Server.handle(Server.java:195)
at org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:680)
at org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:411)
at org.eclipse.jetty.server.internal.HttpConnection$FillableCallback.succeeded(HttpConnection.java:1809)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:54)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:1009)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1239)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1194)
at java.base/java.lang.Thread.run(Thread.java:1474)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
... 32 more
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper
Expected behavior
Not sure - maybe this is an intended change for v7 that isn't documented yet, but otherwise, like on v6, I would have expected to not need Jackson if I don't use JSON features.
To Reproduce
See above
Additional context
I was looking at the code to see how this was introduced and to be honest my question is more "how did this ever work?" 😅 - the object mapper usage isn't really lazy, neither on v6 nor on v7...
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels