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

JBoss7.2环境使用javax javaee-api 8依赖找不到JsonBuilder类问题求助

问题排查及解决方法

可能的问题原因

  • 编译期类路径缺失:你配置的javaee-api依赖scope为provided,Maven不会将该依赖拉入本地编译类路径,默认依赖运行环境提供对应类。但Java 11已经移除了内置的JavaEE相关API,本地编译时没有可用的类来源,直接触发编译报错。另外部分开源渠道的javaee-api 8.0包做了裁剪,本身就不包含JSON-B(javax.json.bind)相关API。
  • 类名/包名导入错误:JSON-B 1.0规范中,绑定构建类的全限定名是javax.json.bind.JsonbBuilder,你代码里导入的javax.json.bind.JsonBuilder属于拼写错误。注意JSON-P(JSON处理API)中的构建类为javax.json.JsonBuilder,属于javax.json包而非javax.json.bind包,大概率是混淆了两个API的类名。
  • JBoss模块未显式声明:即使解决编译问题,JBoss 7.2默认不会将内置的javax.json.bind模块暴露给部署的应用,就算服务器模块目录下存在对应jar包,应用运行时仍然会报类找不到。

修复步骤

  1. 核对代码导入的类名:如果是要用JSON-B做对象序列化/反序列化,改成导入javax.json.bind.JsonbBuilder;如果是要用JSON-P构建JSON对象,改成导入javax.json.JsonBuilder。
  2. 调整pom依赖配置,补全编译期的API来源:
<!-- 保留原有javaee-api依赖的前提下,新增JSON-B API依赖 -->
<dependency>
    <groupId>javax.json.bind</groupId>
    <artifactId>javax.json.bind-api</artifactId>
    <version>1.0</version>
    <scope>provided</scope>
</dependency>
<!-- 如果用到JSON-P的API,同时新增以下依赖 -->
<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.1</version>
    <scope>provided</scope>
</dependency>

如果你不想单独新增依赖,也可以将原有javaee-api的scope从provided改成compile,但要注意后续打包时排除和服务器冲突的类,避免运行时包冲突。
3. 在应用的WEB-INF目录下新增jboss-deployment-structure.xml配置,显式声明依赖JBoss的对应模块:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="javax.json.bind.api" export="true"/>
            <module name="javax.json.api" export="true"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:12:03