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

Elasticsearch Java客户端运行报错:NoClassDefFoundError: JsonpMapper

问题原因

你碰到的NoClassDefFoundError是因为Maven默认package命令生成的JAR包不包含项目依赖的第三方类库。Eclipse运行时会自动把所有依赖的JAR加入类路径,所以能正常执行;但用java -cp直接运行自己的JAR时,JVM找不到Elasticsearch客户端相关的类(比如JsonpMapper)。

解决方案

方案1:构建包含所有依赖的Fat JAR(推荐)

用Maven Assembly插件打包,把项目代码和所有依赖合并到一个JAR里:

  1. 在pom.xml的<build><plugins>节点中添加以下插件配置:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.6.0</version>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>
                <!-- 指定你的主类全路径 -->
                <mainClass>es.App</mainClass>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>
  1. 执行打包命令:
mvn clean package
  1. 打包完成后,target目录下会生成两个JAR:一个是普通JAR,另一个是带-jar-with-dependencies后缀的Fat JAR。运行这个Fat JAR:
java -jar target/你的项目名-1.0-SNAPSHOT-jar-with-dependencies.jar

方案2:手动指定依赖类路径

如果不想打包Fat JAR,可先把所有依赖复制到指定目录,再在运行时手动包含:

  1. 执行Maven命令复制所有依赖到target/lib目录:
mvn dependency:copy-dependencies -DoutputDirectory=target/lib
  1. 运行项目时,把自己的JAR和lib目录下所有依赖加入类路径:
# Linux/Mac系统用冒号分隔
java -cp "target/你的项目名-1.0-SNAPSHOT.jar:target/lib/*" es.App

# Windows系统用分号分隔
java -cp "target/你的项目名-1.0-SNAPSHOT.jar;target/lib/*" es.App

额外检查

确保pom.xml里已正确引入Elasticsearch Java客户端及必要依赖:

<dependencies>
    <dependency>
        <groupId>co.elastic.clients</groupId>
        <artifactId>elasticsearch-java</artifactId>
        <version>7.17.9</version>
    </dependency>
    <!-- 客户端依赖Jackson处理JSON -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.13.4.2</version>
    </dependency>
    <!-- 7.x版本客户端需要Jakarta JSON API -->
    <dependency>
        <groupId>jakarta.json</groupId>
        <artifactId>jakarta.json-api</artifactId>
        <version>2.0.1</version>
    </dependency>
</dependencies>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:37:34