当前位置: 首页 > 知识库问答 >
问题:

Spring boot不提供来自jar内部的静态文件

公羊向荣
2023-03-14

Spring boot不提供放置在jar中的静态文件。

我有一个后端应用程序,我决定添加前端。设置任务以将静态前端文件复制到 src/主/资源/静态。在SO上经历了一堆答案,他们都建议静态内容(索引.html,.js和.css文件)应该驻留在src/main/resources/staticsrc/main/resources/public下,我都尝试过。我打开构建的.jar,静态文件在那里,但是使用java -jar myApp启动应用程序.jar并打开localhost:8080给了我默认的白标错误页面。我的应用程序工作,因为我可以访问我在其上运行的API。应用程序没有@EnableWebMvc或任何其他自定义配置。

如果我手动将相同的静态资源复制/粘贴到项目的< code > src/main/resources/static 中,并在IDE中使用@SpringBootApplication类运行应用程序——资源加载没有问题,index.html在访问< code>localhost:8080时打开,所以只有当文件在. jar中时才会出现问题。jar文件?Spring靴版本2.1.1

共有1个答案

柏正平
2023-03-14

我正面临着同样的问题。

如果有帮助,我可以通过添加以下配置来管理正确提供静态文件:

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启动的“隐式”自动配置,我的其他过滤器等不再工作=

[编辑]最后,我碰巧知道包含静态文件的jar不包括在构建的bootJar中。您可能需要检查一下。呵呵!

 类似资料:
  • 我无法访问静态内容(angular app),甚至无法访问简单的索引。来自spring boot的html文件。我一直收到404错误。Spring没有为我提供这些静态文件。自从升级到Spring Boot 2.2.4后,我就遇到了这个问题。我必须升级以应对Zip64问题。 我的application.properties里有这样一句话: 我也有自己的staticResourceConfigurat

  • 我一直在处理将一个站点从Apache迁移到Nginx的过程,我快要失去理智了。虚拟主机不想提供静态资源(css、js等),我似乎不知道为什么。服务器块看起来像这样: 我错过了什么?我知道这是因为我对Nginx缺乏经验,但任何建议都将不胜感激。 谢谢 更新 这似乎与我以前遇到麻烦的化名有关。如果我将我的文档根指向别名位置(),并尝试呈现没有别名的静态内容,它会呈现良好的效果。一旦我在网址中输入别名.

  • 问题内容: 我正在使用,我的django应用的结构如下 的是 在我尝试使用它为: 但是它没有加载并给出错误 我跑去收集所有静态文件。 为什么要加载CSS文件?是否缺少任何配置? 请提出建议。 问题答案: 根据文档正确的方式来加载静态文件是 这会工作

  • 问题内容: 我无法让Spring-boot项目提供静态内容。 我已经放在一个命名的文件夹下。在其中,我有一个名为的文件夹。当我打包应用程序并运行它时,它找不到我放在该文件夹中的图像。 我试图把静态文件中,并但没有任何工程。 如果我我可以看到文件在正确文件夹的jar中:例如,但是调用:http://localhost:8080/images/head.png,我得到的只是一个404 有什么想法为什么

  • 问题内容: 我有一个关于在Go中提供文件的快速问题。有一个省时的FileServer处理程序,但是对于我的用例来说,我的应用程序只有2或3个文件(js和css),我不想使部署复杂化而不得不考虑这些问题。 您是否认为有一种简单的方法可以将这两个文件构建为二进制文件并从那里提供文件。例如,base64将文件的数据编码为常量,然后从常量中存储文件。这将以最简单的形式工作,但是我不想自己做文件服务器所做的

  • 因此,我正在IntelliJ开发一个spring boot应用程序。使用Gradle,我创建了sprint引导jar文件。 我很难确定将JSP和静态内容(如。js文件)放在哪里,这样运行jar和从IntelliJ内部运行都能正常工作!