我看了一遍,我无法弄清楚我在打包的spring-boot jar文件中尝试提供index.html
页面的方式出错了。这是我的应用结构:
当我运行mvn clean install
时,它正确打包jar并实际将index.html
文件放入jar中的静态文件夹中。
这是我的MVC Conf:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
registry.addResourceHandler("/static/**").addResourceLocations("/static/");
registry.addResourceHandler("/app/**").addResourceLocations("/app/");
registry.addResourceHandler("/**").addResourceLocations("/");
}
我做得不好吗?
答案 0 :(得分:2)
尝试添加" classpath"到资源位置,
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
答案 1 :(得分:2)
好的,我感谢多个来源的帮助!这是我做的,所以它可以帮助别人:
1)在POM中添加此资源。我仍然不确定为什么我需要这个,但如果没有这个我的应用程序将无法提供。 Spring引导应该自动执行此操作,但显然不是。
<resources>
<resource>
<directory>src/main/resources/static</directory>
<targetPath>static</targetPath>
</resource>
</resources>
2)在我的MVC配置中,我添加了这个(类似于下面的答案):
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
"classpath:/META-INF/resources/", "classpath:/resources/",
"classpath:/static/", "classpath:/public/" };
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
}
添加这两件事后,我的应用程序开始提供文件!
答案 2 :(得分:0)
我相信您应该阅读此内容,如何提供静态内容:
总而言之,您的浏览器正在缓存您的静态资源,例如CSS文件或html文件。
为了打破这种行为,请先尝试清理浏览器缓存,然后在google chrome中进行设置,然后清除浏览数据。
其次,将这些行添加到application.properties文件中以便破坏缓存:
spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**
或添加此内容:
spring.resources.chain.strategy.fixed.enabled=true
spring.resources.chain.strategy.fixed.paths=/**
spring.resources.chain.strategy.fixed.version=v12
答案 3 :(得分:0)
在春季启动项目中,您可以通过扩展 WebMvcConfigurerAdapter 并覆盖 addResourceHandlers 来实现此功能
@SpringBootApplication
public class DemoApplication extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
}
上访问