【发布时间】:2019-07-11 03:45:18
【问题描述】:
Spring boot 不提供放置在 jar 中的静态文件。
我有一个后端应用程序,我决定添加前端。设置任务将静态前端文件复制到src/main/resources/static。在 SO 上经历了一堆答案,他们都建议静态内容(index.html、.js 和 .css 文件)应该位于 src/main/resources/static 或 src/main/resources/public 下,我都试过了。我打开构建的 .jar 并且静态文件在那里,但是使用 java -jar myApp.jar 启动应用程序并打开 localhost:8080 会给我默认的 whitelabel 错误页面。我的应用程序有效,因为我可以访问我在其上运行的 api。
应用程序没有@EnableWebMvc 或任何其他自定义配置。
如果我手动将相同的静态资源复制/粘贴到项目的 src/main/resources/static 并使用 IDE 中的 @SpringBootApplication 类运行应用程序 - 资源加载没有问题并且 index.html 在访问 localhost:8080 时打开,所以这只是一个问题当文件在 .jar 中时。
静态文件在可运行的 spring boot .jar 文件中时是否应该有所不同?
Spring Boot 2.1.1 版
【问题讨论】:
-
当它们位于可运行的 jar 中时,您是否尝试通过完整路径(例如 localhost:8080/index.html)访问它们?
-
是的,尝试通过 localhost:8080/index.html 直接访问会出现同样的错误 - 未找到。
-
你的 .jar 文件结构和里面是什么样子的?
-
你的 POM/Gradle 文件是什么样的?似乎是项目构建问题..
-
@SasiKathimanda 这是不正确的。如果配置正确,Spring-Boot 完全能够为静态资源提供服务。
标签: java spring spring-boot