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

无法解析JSONTokener(InputStream)构造方法问题求助

解决Maven项目中org.json.JSONTokener InputStream构造方法不可用的问题

看起来你遇到了Maven依赖冲突导致的类包覆盖问题——原本正常使用的org.json.JSONTokener(InputStream)构造方法,因为其他依赖引入了同名但功能不全的org.json实现(比如hive或codehaus的版本),导致正确的org.json包被排挤了。下面是一步步的解决方法:

1. 明确引入官方org.json依赖

首先,在你的pom.xml中直接添加官方的org.json依赖,指定一个稳定版本(可以用你之前项目正常运行时的版本,或者最新的稳定版):

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20240303</version> <!-- 替换为你需要的版本 -->
</dependency>

直接添加这个依赖会让Maven优先使用官方包,避免被其他依赖的同名包覆盖。

2. 排除冲突依赖中的org.json实现

接下来,找到引入hive或codehaus版org.json的依赖,在pom.xml中排除它们的org.json模块。比如如果是hive-jdbc带来的冲突,修改对应的依赖配置:

<dependency>
    <groupId>org.apache.hive</groupId>
    <artifactId>hive-jdbc</artifactId>
    <version>你的hive版本号</version>
    <exclusions>
        <exclusion>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
        </exclusion>
    </exclusions>
</dependency>

如果不确定是哪个依赖引入的冲突,可以执行mvn dependency:tree命令,在输出中搜索org.json,找到所有包含它的依赖项,逐一排查排除。

3. 刷新Maven并验证依赖

在IntelliJ中,点击Maven面板的「Reload All Maven Projects」按钮,或者右键项目 → Maven → Reload Project,让依赖重新导入。

之后,你可以在IntelliJ的Maven依赖列表中搜索json,确认org.json:json已经被正确引入,并且没有其他同名的org.json包存在。

4. 修正代码导入语句

检查你的代码导入,确保使用的是官方org.json包的类:

import org.json.JSONObject;
import org.json.JSONTokener;

如果IntelliJ之前自动导入了错误的包(比如hive的),手动修改导入语句,还可以在Settings → Editor → Code Style → Java → Imports中,将org.json设置为优先导入,或者禁用其他同名包的自动导入提示。

5. 验证代码运行

最后,重新运行你的代码,new JSONTokener(getClass().getResource("/identification/carrier.json").openStream())应该就能正常使用InputStream构造方法了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:38:29