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

Spring Boot项目部署到Tomcat运行报FileFormatUtil类找不到错误

问题描述

搭建Spring Boot项目时引入最新版aspose-cells依赖,编写用于校验文件安全性的isSafe方法,核心逻辑为调用FileFormatUtil类的相关方法检测Excel文件格式,方法代码片段如下:

public static boolean isSafe(File f) throws Exception {
        boolean safeState = false;
        // try {
        if ((f != null) && f.exists() && f.canRead()) {
            // Perform a first check on Excel document format
            FileFormatInfo formatInfo = FileFormatUtil.detectFileFormat(f.getAbsolutePath());
            String formatExtension = FileFormatUtil.loadFormatToExtension(formatInfo.getLoadFormat());

运行现象存在明显差异:

  • Spring Boot内置容器启动项目时,isSafe方法可正常执行,无任何报错
  • 项目打包部署到外部Apache Tomcat服务器运行、调用该方法时,抛出异常:java.lang.NoClassDefFoundError: com/aspose/cells/FileFormatUtil
    相关参考截图:
  • 内置容器运行正常截图:内置容器运行正常截图
  • Tomcat部署报错截图:Tomcat部署报错截图
  • 依赖配置截图:依赖配置截图
根因定位

异常核心原因是外部Tomcat部署时,类加载路径下找不到com.aspose.cells.FileFormatUtil对应的类文件。内置容器能正常运行是因为Spring Boot可执行fat jar打包时会把所有compile范围的依赖打进jar包,类加载器可以正常扫描到依赖类;部署到外部Tomcat时出现类缺失,常见诱因有3种:

  1. 依赖scope配置错误:aspose-cells依赖被设置为provided/test范围,这两类范围的依赖不会被打进war包的WEB-INF/lib目录
  2. 本地引入的aspose jar未被纳入打包资源:如果aspose-cells是通过系统路径导入的本地jar、未发布到maven仓库,默认打包逻辑不会将该jar带入war包
  3. Tomcat类加载冲突:Tomcat优先加载自身lib目录下的jar包,如果该目录下存在版本不匹配的aspose相关jar,会优先加载旧版本类,缺失FileFormatUtil相关实现
修复方案

按以下顺序逐一排查修复即可:

  1. 修正依赖scope配置
    检查项目pom.xml(Maven)或build.gradle(Gradle)中的aspose-cells依赖配置,删除provided/test类的scope配置,使用默认的compile范围即可,Maven配置参考:
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-cells</artifactId>
        <version>对应使用的版本号</version>
    </dependency>
    
  2. 补全本地jar的打包规则
    如果是本地导入的aspose jar,先通过mvn install命令将jar安装到本地maven仓库再按正常依赖引入,或者在maven-war-plugin插件中显式配置将本地jar纳入打包资源。
  3. 校验war包内容
    执行打包命令后解压生成的war包,查看WEB-INF/lib目录下是否存在aspose-cells对应的jar包,确认依赖确实被打入部署包后再部署到Tomcat。
  4. 清理Tomcat冲突包
    进入Tomcat安装目录下的lib文件夹,检查是否存在非业务自带的aspose相关jar包,存在则直接删除,避免Tomcat优先加载错误版本的类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:12:18