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

在Jakarta EE Rest Web应用中使用langchain4j OpenAI API崩溃的原因?

问题解决:Jakarta EE中langchain4j调用OpenAI API因sun.misc.Unsafe限制崩溃

问题根源

你推测的结论正确:Jakarta EE容器(如你使用的WildFly)出于安全与规范要求,禁止应用直接访问sun.misc.Unsafe API。而langchain4j依赖的openai4j库默认使用GSON,GSON会尝试通过Unsafe实例化无默认构造函数的ChatCompletionResponse类,触发容器的权限限制导致崩溃。

解决方案

方案1:自定义GSON配置禁用Unsafe

手动创建禁用Unsafe的Gson实例,替换OpenAiChatModel默认的JSON处理器,让GSON改用反射实例化对象:

@Path("blockChat")
public class BlockChat {

    private OpenAiChatModel chatModel;

    public BlockChat(){
        String apiKey = "XXXXXXXXX";
        
        // 创建禁用Unsafe的Gson实例
        Gson gson = new GsonBuilder()
                .disableJdkUnsafe()
                .create();
        
        // 自定义OpenAiClient并传入配置好的Gson
        OpenAiClient openAiClient = OpenAiClient.builder()
                .apiKey(apiKey)
                .gson(gson)
                .build();
        
        chatModel = OpenAiChatModel.builder()
                .openAiClient(openAiClient)
                .build();
    }

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    @Path("/{message}")
    public String chat(@PathParam("message") String message) {
        return chatModel.generate(message);
    }
}

方案2:升级langchain4j版本

langchain4j后续版本(如0.35.0及以上)已调整JSON处理逻辑,部分版本切换为Jackson作为默认处理器,避免了对Unsafe的依赖。修改pom.xml中的依赖版本:

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai</artifactId>
    <version>0.35.0</version> <!-- 或更高稳定版本 -->
</dependency>

方案3:(不推荐)在WildFly中开放Unsafe访问

仅作为临时测试方案,修改WildFly的standalone-full.xml配置,添加JVM参数开放Unsafe权限:

<jvm-options>
    <!-- 其他原有参数 -->
    <jvm-option>-XX:+UnlockDiagnosticVMOptions</jvm-option>
    <jvm-option>-XX:+UnsafeDebugging</jvm-option>
    <jvm-option>--add-opens=java.base/sun.misc=ALL-UNNAMED</jvm-option>
</jvm-options>

该方式违反Jakarta EE规范,降低应用安全性与可移植性,不建议生产环境使用。

验证

修改代码或配置后,重新构建并部署到WildFly,发送GET请求测试端点是否正常返回响应。

内容的提问来源于stack exchange,提问作者Jâwâhar Babu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:30:20