Spring Boot 找不到图片资源

Posted

技术标签:

【中文标题】Spring Boot 找不到图片资源【英文标题】:Spring Boot cannot find image assets 【发布时间】:2019-08-11 21:15:21 【问题描述】:

Spring Boot 应用程序被打包为fat jar 文件。我正在使用Spring Boot 的嵌入式Tomcat 实例。我没有将application.properties 中的默认位置更改为spring.resources.static-locations。 Angular 应用程序的生产版本添加在/static 下。 server.servlet.context-path 设置为appserver.port8480base href for index.html.

/static
- /assets
-- /images
---- logo.png
---- /flags
------ flag.png
-- /scss
- index.html
- *.js
- *.js.map
- *.ttf
- *.eot
- *.svc
- *.woff
- *.woff2

我可以加载界面并且 Angular 应用程序正在正确发送 REST 请求,但我无法加载任何图像资源。 /assets/scss 在开发工具中被正确识别,但不是 /assets/images。还根据this视频添加了这个@Configuration

@Configuration
public class StaticResourceConfigurator extends WebMvcConfigurerAdapter 
   @Override
   public void addResourceHandlers(ResourceHandlerRegistry registry) 
      registry
        .addResourceHandler("/assets/images/**")
        .setCachePeriod(0)
        .addResourceLocations("classpath:/static/assets/images/");
      

图片资源请求发送到localhost:8480/assets/images/logo.png,而应该是localhost:8480/app/assets/images/logo.png

I am using IntelliJ IDE. Here is the screenshot of my resources

ChromeDevTools log using production build application. Replaced app with afs

【问题讨论】:

你能把base_url 存在于Angular 应用程序的index.html 中的属性贴出来 @VaibhavKumarGoyal Angular 应用程序的index.html 中没有定义base_url。或者我是否需要定义该属性才能使其工作? 你是在 tomcat 服务器上运行你的 Angular 应用程序,打包成一个 war 还是一个 jar? @DulanjayaTennekoon 我正在使用 Spring Boot 中的嵌入式 Tomcat 服务器运行 Angular 应用程序。 Spring 应用程序被打包为一个 jar 文件。 应用网址是什么?罐子叫什么名字? 【参考方案1】:

您应该如下更改索引文件的baseUrl

如果你的 Jar 名称是 app.jar,那么你的 baseUrl 必须是

<base href="/app/">

【讨论】:

已将base href 属性设置为/app/,但仍未加载图像。 ng build --base-href=/app/ 你是从 index.html 改过来的吗?尝试从 index.html 更改它并检查 index.htmlng build 之后的输出与您推荐的模式相同。编辑:将附加开发工具请求 您是否尝试过任何生产版本,ng build --base-href=/app/ --prod 是的。我已经尝试使用它来构建 Angular 应用程序。会为此向前端人员寻求帮助。

以上是关于Spring Boot 找不到图片资源的主要内容,如果未能解决你的问题,请参考以下文章

使用可执行 Jar 时找不到 Spring-Boot 资源

Spring-Boot ResourceLocations 在资源/静态/css 中找不到 css 文件

Spring Boot找不到主类多模块

spring boot项目打成war包传到服务器(centos7.0)static下的资源丢失,找不到路径问题

带有 Spring Boot 的 Thymeleaf - 找不到静态资产 (CSS)

Spring Boot Oauth2 验证资源所有者密码凭证授予的访问令牌