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

Maven打包后运行Jar包报NoClassDefFoundError:EncryptedDocumentException怎么办

问题根因

这个异常是Maven默认打包生成的Jar包未包含POI等第三方依赖,运行时JVM无法找到对应类导致的,IDE运行时会自动加载所有依赖到类路径,因此不会出现报错。

排查步骤

  • 确认Jar包是否包含依赖:用解压工具打开你生成的Jar包,查看org/apache/poi目录是否存在,不存在就说明依赖未打进Jar包。
  • 核对Maven打包配置:检查pom.xml里是否配置了正确的可执行Jar打包插件,默认的maven-jar-plugin不会合并第三方依赖到输出Jar中。

解决方法

方法1:使用maven-assembly-plugin打包带依赖的可执行Jar

在pom.xml的<build><plugins>节点下添加如下配置:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <!-- 替换为你自己的主类全路径 -->
                <mainClass>com.exceltogpx.Main</mainClass>
            </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

配置完成后重新执行mvn clean package,会生成后缀为jar-with-dependencies.jar的文件,直接用java -jar运行该文件即可。

方法2:使用maven-shade-plugin打包

如果存在依赖冲突(比如多个Jar包存在同名类需要优先级配置)可以选择该插件,配置如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.2.4</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <!-- 替换为你自己的主类全路径 -->
                        <mainClass>com.exceltogpx.Main</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

执行mvn clean package后直接运行生成的Jar包即可。

额外校验点

确认所有POI相关依赖版本一致,你当前配置的poi和poi-ooxml都是5.0.0版本符合要求,不需要调整依赖配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 15:15:02