gpt4 book ai didi

带有静态内容的 Spring Boot 项目在运行 jar 时生成 404

转载 作者:IT老高 更新时间:2023-10-28 13:47:22 27 4
gpt4 key购买 nike

Spring 最近发布的关于在 Spring Boot 项目中使用静态 Web 内容的博文 (https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot) 表明可能会使用多个资源目录:

  • /META-INF/resources/
  • /资源/
  • /静态/
  • /公共(public)/

这要归功于 WebMvcAutoConfiguration 类,它自动将这些目录添加到类路径中。这一切似乎都很好,并且在使用 spring-boot-maven-plugin spring-boot:run 目标时似乎可以工作,你所有的静态内容正在运行(例如:/index.html)。

当你打包你的 Spring Boot 项目并允许 spring-boot-maven-plugin 创建增强的 JAR 然后尝试使用 java -jar my-spring-boot 运行你的项目-project.jar 你发现你的静态内容现在返回一个 404 错误。

最佳答案

事实证明,虽然 Spring Boot 很聪明地将各种资源目录添加到类路径中,但 Maven 却没有,这取决于你来处理这部分。默认情况下,只有 src/main/resources 将包含在您的 JAR 中。如果您在项目的根目录中创建一个名为 /static 的文件夹(如博客文章所暗示的那样),那么在使用 spring-boot:run Maven 目标,但不是在您创建 JAR 后。

最简单的解决方案是在 /src/main/resources 中创建您的 /static 文件夹,然后 Maven 会将其包含在 JAR 中。或者,您可以向 Maven 项目添加其他资源位置:

<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>static</directory>
<targetPath>static</targetPath>
</resource>
</resources>

我希望这对某人有用,当您退后一步看看 Maven 的工作原理时,这很明显,但它可能会难倒一些使用 Spring Boot 的人,因为它的设计几乎不需要配置。

关于带有静态内容的 Spring Boot 项目在运行 jar 时生成 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21358403/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com