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文件中时,它们是否应该有所不同?
春季启动版本2.1.1
答案 0 :(得分:1)
我正面临着同样的问题。
如果有帮助,我可以通过添加以下配置来设法正确处理静态文件:
软件包fr.maif.darwin.api.security;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableWebMvc
public class StaticFilesConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
}
...但是它会覆盖Spring Boot中的“隐式”自动配置,而我的其余过滤器等也不再起作用... =>这是因为@EnableWebMvc
停用了spring的默认配置。 / p>
[EDIT] 最后,我偶然发现,包含静态文件的jar不包含在内置的bootJar中。您可能要检查一下。 HTH!