Reputation: 1
How to fix Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/websocket/core/server/FrameHandlerFactory error.
when running javalin6 server with rdg4j 4.3.9 getting this error
[main] INFO com.mphasis.kb.NettyServerRunner - Javalin Server starting...
[main] INFO org.eclipse.jetty.util.log - Logging initialized @474ms to org.eclipse.jetty.util.log.Slf4jLog
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/websocket/core/server/FrameHandlerFactory
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)
at io.javalin.util.Util.classExists(Util.kt:37)
at io.javalin.jetty.JettyUtil.createJettyServletWithWebsocketsIfAvailable(JettyUtil.kt:12)
at io.javalin.config.PrivateConfig$servlet$1.invoke(PrivateConfig.kt:39)
at io.javalin.config.PrivateConfig$servlet$1.invoke(PrivateConfig.kt:39)
at kotlin.UnsafeLazyImpl.getValue(Lazy.kt:81)
at io.javalin.jetty.JettyServer.start(JettyServer.kt:73)
at io.javalin.Javalin.start(Javalin.java:123)
at com.XXXXXX.runServer(XXX.java:37)
at com.XXXXX.main(XXXX.java:22)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.websocket.core.server.FrameHandlerFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
... 11 more
import io.javalin.Javalin;
import io.javalin.http.staticfiles.Location;
public class JavalinServer {
private static final Javalin server = Javalin.create(config -> {
config.staticFiles.add("css", Location.CLASSPATH);
config.staticFiles.add("images", Location.CLASSPATH);
});
public static GDBServer graph = new GDBServer();
public static void runServer(int port){
server.start(port);
}
}
}
Getting above error when run standalone application with javalin6 server with rdf4j 4.3
Upvotes: 0
Views: 158
Reputation: 12617
I had the same issue, but I'm not using rdf4j
, and found that it is caused by using an older version of jetty. I got jetty 9.x from a bom, and it took precedence over the jetty dependency coming from javalin 6.x, uses jetty 11. Looking at the rd4j
pom, it seems it is using jetty 9.x as well.
Not sure if rdf4j will work with jetty 11. But you could try
exclude the jetty dependency from rdf4j
,
override the jetty version with dependencyManagement
.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-bom</artifactId>
<version>11.0.23</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Downgrade javalin version 4.x (which uses jetty 9.x)
Upvotes: 0