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

生产环境部署Jar遇NoClassDefFoundError: org/json/JSONArray问题求助

解决java.lang.NoClassDefFoundError: org/json/JSONArray问题

这个错误的核心是运行时找不到org.json相关类——本地编译正常说明编译期依赖没问题,但打包后的Jar在生产环境运行时缺了这个依赖。下面是针对性的解决方案:

1. 检查pom.xml里的依赖scope

确认org.json的依赖没被设置成test或provided,这两个scope会导致打包时不把依赖打进Jar。正常的依赖配置应该是这样:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>你的具体版本号</version>
    <!-- 别加scope=test/provided -->
</dependency>

2. 打包时把依赖打进Jar

如果是打包成可执行Jar,必须确保依赖被包含进去,推荐用Maven Shade插件:
在pom.xml的build/plugins里添加以下配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.4.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>你的主类全路径(比如com.example.MyApp)</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

之后执行mvn clean package,生成的带shade后缀的Jar就是包含所有依赖的可执行Jar。

3. 检查生产环境的运行类路径

如果是部署到服务器(比如Tomcat):

  • 要是用独立Jar运行,确保Jar里包含org.json类;
  • 要是分开部署依赖,把org.json的Jar放到服务器的类路径目录(比如Tomcat的WEB-INF/lib),或者运行时用-cp参数指定依赖路径,比如:java -cp your-app.jar:json.jar com.example.MyApp

4. 验证打包后的Jar内容

用命令检查Jar里有没有org.json的类:

jar tf your-app.jar | grep org/json/JSONArray

如果没输出,说明依赖没被打进Jar,回头重新检查打包配置。

5. 修复本地Maven仓库的依赖

删除本地Maven仓库里的org/json缓存目录(比如~/.m2/repository/org/json),然后执行mvn clean install重新下载依赖,避免本地依赖文件损坏导致打包异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:20:10