You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Javalin6+RDF4J4.3时遇NoClassDefFoundError问题求助

解决Javalin 6 + RDF4J 4.3运行时的NoClassDefFoundError问题

问题原因

报错java.lang.NoClassDefFoundError: org/eclipse/jetty/websocket/core/server/FrameHandlerFactory的核心原因:

  • 运行时缺失Jetty WebSocket核心服务器组件的依赖
  • RDF4J 4.3自带的Jetty版本与Javalin 6依赖的Jetty版本冲突,导致WebSocket相关类无法正常加载

解决方案

1. 统一Jetty版本并排除冲突依赖

Javalin 6默认依赖Jetty 11.x系列版本,需确保项目中所有Jetty组件版本一致,同时排除RDF4J自带的Jetty依赖避免冲突:

  • Maven配置示例:
    <!-- 统一Jetty版本 -->
    <properties>
        <jetty.version>11.0.15</jetty.version>
    </properties>
    
    <!-- RDF4J依赖排除Jetty组件 -->
    <dependency>
        <groupId>org.eclipse.rdf4j</groupId>
        <artifactId>rdf4j-server</artifactId>
        <version>4.3.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>*</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

2. 显式添加Jetty WebSocket核心依赖

在项目依赖中主动添加缺失的WebSocket组件:

  • Maven依赖:
    <dependency>
        <groupId>org.eclipse.jetty.websocket</groupId>
        <artifactId>websocket-core-server</artifactId>
        <version>${jetty.version}</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty.websocket</groupId>
        <artifactId>websocket-servlet</artifactId>
        <version>${jetty.version}</version>
    </dependency>
    
  • Gradle依赖:
    implementation "org.eclipse.jetty.websocket:websocket-core-server:11.0.15"
    implementation "org.eclipse.jetty.websocket:websocket-servlet:11.0.15"
    

3. 验证依赖树排查冲突

执行命令检查项目依赖树,确保无多版本Jetty组件共存:

  • Maven:mvn dependency:tree
  • Gradle:./gradlew dependencies

备选方案:禁用WebSocket支持(若无需该功能)

如果项目不需要WebSocket功能,可在Javalin配置中禁用相关加载逻辑:

private static final Javalin server = Javalin.create(config -> {
    config.staticFiles.add("css", Location.CLASSPATH);
    config.staticFiles.add("images", Location.CLASSPATH);
    // 禁用WebSocket相关初始化
    config.jetty.modifyServletContextHandler(ctx -> {
        ctx.getServer().setWebSocketFactory(null);
    });
});

内容的提问来源于stack exchange,提问作者Ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:06:21