springBoot 下载文件打不开,提示损坏解决方案

博客讲述了在SpringBoot项目中遇到的Excel文件下载后无法打开的问题,原因是文件在打包过程中被过滤和处理。解决方案是在Maven的配置中排除特定文件类型,避免过滤,并提供了一段具体的Maven配置代码示例。最终找到问题源在于原有的资源配置,修改后成功解决了文件损坏问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载excel,发现打不开,提示损坏。

 

1.文件是放在classpath 目录下:

2.查看编译后文件大小是否不一样了(或者下载下来的文件是不是和原来的不一样了)

 

3.解决方案

网上解决方案很多,但不是我想要的,下面这哥们的方案实测可行,我再补充清楚一些方便小白理解:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <classifier>exec</classifier>
                </configuration>
            </plugin>
        </plugins>

        <--在build标签下,加入以下内容,排除掉特定后缀文件不压缩 >
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>**/*.xlsx</exclude>
                    <exclude>**/*.docx</exclude>
                    <exclude>**/*.pdf</exclude>
                </excludes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xlsx</include>
                    <include>**/*.docx</include>
                    <include>**/*.pdf</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
</build>

小坑后记:

文章发完了,再测试一下,我去?以不行了,这不是啪啪打面?

经过测试为原来代码这里问题,自己没认真看。

      <resources>
            原项目有这段,导致下载又是损坏的
            <!-- <resource> -->
            <!--     <directory>src/main/resources</directory> -->
            <!--     <filtering>true</filtering> -->
            <!-- </resource> -->


            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>-------/mapper/*.xml</include>
                </includes>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>**/*.xlsx</exclude>
                    <exclude>**/*.docx</exclude>
                    <exclude>**/*.pdf</exclude>
                </excludes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xlsx</include>
                    <include>**/*.docx</include>
                    <include>**/*.pdf</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>

如果解决了你的问题,请大佬们给个赞。

参考文章:

springboot访问下载/resource/static下的静态资源;下载excel文件损坏,打不开_甜无能的博客-优快云博客_springboot下载静态资源

java 下载项目的excel模板,文件损坏问题_ZHicker的博客-优快云博客_java下载文件损坏

### Spring Boot项目中程序包不存在的解决方案Spring Boot项目提示“程序包不存在”的错误时,通常是因为项目的依赖配置不正确、Maven本地仓库损坏或插件冲突等原因引起的。以下是针对该问题的具体分析和解决方法: #### 1. 检查父项目与子项目的构建关系 如果项目是一个多模块工程,则需要先确保父项目已经正确打包并安装到本地Maven仓库中。可以通过运行以下命令来完成父项目的构建: ```bash mvn clean install ``` 之后,在子项目中尝试重新编译,验证是否可以正常通过[^1]。 #### 2. 清理IDE缓存并重建Maven项目 有时IDE(如IntelliJ IDEA)的缓存可能导致依赖解析失败。在这种情况下,建议清除IDE缓存并通过以下方式重新构建整个项目: - **清理IDE缓存**:进入IDE设置页面,选择`File -> Invalidate Caches / Restart`选项。 - **重新构建Maven项目**:在终端中执行以下命令以彻底清理并重新安装所有依赖项: ```bash mvn clean install -U ``` 上述命令中的`-U`参数会强制更新SNAPSHOT类型的依赖项。 #### 3. 调整`spring-boot-maven-plugin`插件配置 某些场景下,`spring-boot-maven-plugin`可能会干扰正常的包路径解析。此时可以考虑临时移除此插件或将其实现替换为其他替代品(如`maven-compiler-plugin`),然后再重新构建项目。例如,可以在`pom.xml`文件中修改相关内容如下所示: ```xml <build> <plugins> <!-- 替换原有的 spring-boot-maven-plugin --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> ``` 完成后再次运行`mvn clean install`命令进行测试[^4]。 #### 4. 检查Maven本地仓库状态 如果仍然存在“程序包不存在”的报错信息,可能是由于Maven本地仓库内的某个依赖被破坏所致。按照以下步骤操作即可修复此类问题: - 打开IDE设置界面,导航至`Build, Execution, Deployment -> Build Tools -> Maven`部分; - 在“User settings file”以及“Local repository”字段处勾选覆盖默认值,并指定新的存储位置; - 应用更改后重启IDE,随后重复执行一次完整的构建流程[^3]。 #### 5. 删除异常的本地库文件夹 对于那些已经被污染或者无法正常使用的目标依赖包来说,最直接的办法便是手动定位它们所在的磁盘目录并将之删除。接着利用标准指令让系统自动下载最新版本回来填补空白区域——即执行下面这条语句实现目标功能: ```bash rm -rf ~/.m2/repository/{problematic_dependency} mvn clean install ``` --- ### 总结 以上列举了几种常见的处理策略用于应对Spring Boot开发过程中可能出现的“程序包不存在”状况。每一种措施都有其特定适用范围,请依据实际情况灵活选用合适的方法加以实施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值