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

运行JAR时JasperReports无法定位相关包,IDE中运行正常

解决JasperReports 7.0.0 + SpringBoot 3.2.5 + JDK17打包JAR后找不到类的问题

可能的原因及对应解决方案:

1. 依赖配置错误,导致Jasper类未被打包进Fat Jar

  • 确保Maven/Gradle中JasperReports的依赖范围为compile(Maven)或implementation(Gradle),而非provided或test:
    Maven示例:
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>7.0.0</version>
        <!-- 不要设置为provided,否则打包时不会包含该依赖 -->
        <scope>compile</scope>
    </dependency>
    
    Gradle示例:
    implementation 'net.sf.jasperreports:jasperreports:7.0.0'
    
  • 检查是否存在依赖排除规则,避免不小心移除了JasperReports的核心模块。

2. SpringBoot打包插件未正确包含Jasper类

  • 若使用spring-boot-maven-plugin,确保插件配置中没有排除Jasper相关包,必要时添加显式的include规则:
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>3.2.5</version>
        <configuration>
            <includes>
                <include>
                    <groupId>net.sf.jasperreports</groupId>
                    <artifactId>jasperreports</artifactId>
                </include>
            </includes>
        </configuration>
    </plugin>
    
  • 执行mvn clean package(或Gradle的./gradlew clean bootJar)重新打包,避免缓存导致的依赖缺失。

3. JDK17模块化限制导致类无法访问

JasperReports 7.0.0可能未适配JDK17的模块化系统,启动JAR时需要添加VM参数解除相关限制:

java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED -jar your-project.jar

若仍有问题,可尝试添加更多开放模块:

java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED -jar your-project.jar

4. 报表编译生成的类未被打包

如果项目中存在编译后的Jasper报表类(如JREvaluator、JRFillField的实现类),确保这些类位于src/main/java或target/classes目录下,且打包过程中被包含进JAR。可直接解压JAR包检查net/sf/jasperreports/engine路径下是否存在对应类文件。

5. 清理依赖缓存,确保依赖一致性

  • Maven:执行mvn clean install -U强制更新依赖并重新构建
  • Gradle:执行./gradlew clean build --refresh-dependencies清理缓存并拉取最新依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:58:25