首页 文章

如果静态内容部署为jar,则Spring引导404错误

提问于
浏览
1

我有spring boot应用程序和angular js项目作为两个不同的模块 .

角度js内容('dist'文件夹内的文件)被转换为jar文件,并作为Spring启动应用程序的一部分包含在内 . jar中的文件夹结构是/ static / ** .

jar出现在spring boot应用程序的lib文件夹中 .

现在,当我尝试访问应用程序http://localhost:8080时,我收到404错误 .

它工作正常,如果我复制/ resources / static中的“dist”文件夹内容并创建spring boot jar文件 .

当静态内容作为jar文件包含时,我错过了什么 . ?

提前致谢

2 回答

  • 0

    我有类似的设置,但使用Angular 4.我的Spring Boot版本是1.5.3.RELEASE .

    我的构建基于Maven,有两个模块 . 一个用于前端(JAR),一个用于后端(WAR),它引用具有Maven依赖性机制的第一个模块 .

    提供静态内容是开箱即用的 . 由于我使用的是Spring Security,因此我必须为此资源配置访问规则 . 但是这个问题应该用401而不是404回答 .

    您的角度JAR结构似乎是正确的 . 您的前端构建是否完整?

    带有前端JAR的 lib 文件夹位于路径 /WEB-INF/ 上的Spring Boot WAR中 .

    您是否检查过使用过的Spring Boot版本是否存在错误?

  • 0

    @Moshe Arad @Raj根据我对https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot的理解,静态内容可以在其中一个提到的位置 . 但是,我自己在服务静态内容方面面临着困难 . 我正在开发基于spring-boot和angular-cli(6.1.5)的app . 为了部署目的,使UI在spring-boot端口上工作;我跑了 ng build . 它在src / main / resource / static中生成文件(将angular.json中的outputPath更改为resources / static并在资源中创建一个空的dir static) . 但是spring-boot在8080没有提供任何角度内容 . 虽然index.html有 <base href="/"> ,但我认为更具体的是从静态目录中选择/提供.js内容所以我跑了: ng build --base-href / --deploy-url /static/ . 这次生成的index.html有/static/runtime.js等 . 但是当访问localhost时:8080 /(右键单击 - > inspect显示200响应代码)仍然没有显示任何UI内容 . 但是命中localhost:8080 / static / runtime.js显示404 .

    我相信除了将内容添加到资源/静态之外还有更多工作要做,因为tomcat可能正在尝试为其提供服务,但不知何故内容未显示 . 因为我注意到浏览器选项卡上的favicon图标(角度图标),jar文件的内容显示路径中生成的静态文件(BOOT-INF / classes / static / index.html等)

相关问题