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
设置为app
。 server.port
是 8480
。 base 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.html
在ng build
之后的输出与您推荐的模式相同。编辑:将附加开发工具请求
您是否尝试过任何生产版本,ng build --base-href=/app/ --prod
是的。我已经尝试使用它来构建 Angular 应用程序。会为此向前端人员寻求帮助。以上是关于Spring Boot 找不到图片资源的主要内容,如果未能解决你的问题,请参考以下文章
Spring-Boot ResourceLocations 在资源/静态/css 中找不到 css 文件
spring boot项目打成war包传到服务器(centos7.0)static下的资源丢失,找不到路径问题