Ram
Ram

Reputation: 1

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/websocket/core/server/FrameHandlerFactory

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

Answers (1)

crea1
crea1

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

Related Questions