java - Spring Boot 损坏字体
问题描述
我有一个基于 Spring-Boot (1.5.10.RELEASE) 和 create-react-app 构建的应用程序。在开发中一切正常(即通过 IDE 运行 spring-boot 并yarn start
用于运行 Web 应用程序。)
问题是在运行生产包时。使用嵌入式tomcat并使用命令运行java -jar target/build-app-1.0.0-SNAPSHOT.jar
基本上在浏览器控制台中得到以下错误信息
Failed to decode downloaded font: <URL>
localhost/:1 Failed to decode downloaded font: http://localhost:8080/static/media/icons.af7ae505.woff2
localhost/:1 Failed to decode downloaded font: http://localhost:8080/static/media/icons.af7ae505.woff2
localhost/:1 Failed to decode downloaded font: http://localhost:8080/static/media/icons.fee66e71.woff
localhost/:1 Failed to decode downloaded font: http://localhost:8080/static/media/icons.fee66e71.woff
localhost/:1 Failed to decode downloaded font: http://localhost:8080/static/media/icons.b06871f2.ttf
localhost/:1 Failed to decode downloaded font: http://localhost:8080/static/media/icons.b06871f2.ttf
localhost/:1 OTS parsing error: Failed to convert WOFF 2.0 font to SFNT
localhost/:1 OTS parsing error: incorrect file size in WOFF header
localhost/:1 OTS parsing error: incorrect entrySelector for table directory
这是我的片段,pom.xml
它从 web 应用程序构建目录复制资源
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-react-resources</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes/static</outputDirectory>
<resources>
<resource>
<directory>src/main/app/build</directory>
<filtering>true</filtering>
</resource>
</resources>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>eot</nonFilteredFileExtension>
<nonFilteredFileExtension>svg</nonFilteredFileExtension>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</execution>
</executions>
</plugin>
字体似乎已正确复制到目标区域
例如来自网络应用程序构建目录
$ ls -la src/main/app/build/static/media/
total 1020
drwxrwxr-x 2 pram pram 4096 Jun 17 09:44 .
drwxrwxr-x 5 pram pram 4096 Jun 17 09:44 ..
-rw-rw-r-- 1 pram pram 28123 Jun 17 09:44 flags.9c74e172.png
-rw-rw-r-- 1 pram pram 165742 Jun 17 09:44 icons.674f50d2.eot
-rw-rw-r-- 1 pram pram 444379 Jun 17 09:44 icons.912ec66d.svg
-rw-rw-r-- 1 pram pram 77160 Jun 17 09:44 icons.af7ae505.woff2
-rw-rw-r-- 1 pram pram 165548 Jun 17 09:44 icons.b06871f2.ttf
-rw-rw-r-- 1 pram pram 98024 Jun 17 09:44 icons.fee66e71.woff
-rw-rw-r-- 1 pram pram 23284 Jun 17 09:44 loader-big.a770b679.gif
-rw-rw-r-- 1 pram pram 3744 Jun 17 09:44 rw-widgets.12f0820c.woff
-rw-rw-r-- 1 pram pram 2765 Jun 17 09:44 rw-widgets.792dcd18.svg
-rw-rw-r-- 1 pram pram 6408 Jun 17 09:44 rw-widgets.bc7c4a59.eot
-rw-rw-r-- 1 pram pram 6232 Jun 17 09:44 rw-widgets.eceddf47.ttf
并从目标
$ ls -la target/classes/static/static/media/
total 1020
drwxrwxr-x 2 pram pram 4096 Jun 17 09:44 .
drwxrwxr-x 5 pram pram 4096 Jun 17 09:44 ..
-rw-rw-r-- 1 pram pram 28123 Jun 17 09:44 flags.9c74e172.png
-rw-rw-r-- 1 pram pram 165742 Jun 17 09:44 icons.674f50d2.eot
-rw-rw-r-- 1 pram pram 444379 Jun 17 09:44 icons.912ec66d.svg
-rw-rw-r-- 1 pram pram 77160 Jun 17 09:44 icons.af7ae505.woff2
-rw-rw-r-- 1 pram pram 165548 Jun 17 09:44 icons.b06871f2.ttf
-rw-rw-r-- 1 pram pram 98024 Jun 17 09:44 icons.fee66e71.woff
-rw-rw-r-- 1 pram pram 23284 Jun 17 09:44 loader-big.a770b679.gif
-rw-rw-r-- 1 pram pram 3744 Jun 17 09:44 rw-widgets.12f0820c.woff
-rw-rw-r-- 1 pram pram 2765 Jun 17 09:44 rw-widgets.792dcd18.svg
-rw-rw-r-- 1 pram pram 6408 Jun 17 09:44 rw-widgets.bc7c4a59.eot
-rw-rw-r-- 1 pram pram 6232 Jun 17 09:44 rw-widgets.eceddf47.ttf
并在部署工件内
$ unzip -vl target/build-app-1.0.0-SNAPSHOT.jar | grep "static/media"
0 Stored 0 0% 2018-06-17 09:44 00000000 BOOT-INF/classes/static/static/media/
3744 Defl:N 3681 2% 2018-06-17 09:44 a861d971 BOOT-INF/classes/static/static/media/rw-widgets.12f0820c.woff
165742 Defl:N 98260 41% 2018-06-17 09:44 ba1d704f BOOT-INF/classes/static/static/media/icons.674f50d2.eot
6232 Defl:N 3458 45% 2018-06-17 09:44 130aa154 BOOT-INF/classes/static/static/media/rw-widgets.eceddf47.ttf
98024 Defl:N 97913 0% 2018-06-17 09:44 e07b3318 BOOT-INF/classes/static/static/media/icons.fee66e71.woff
6408 Defl:N 3512 45% 2018-06-17 09:44 06efde2c BOOT-INF/classes/static/static/media/rw-widgets.bc7c4a59.eot
444379 Defl:N 136041 69% 2018-06-17 09:44 5f3bf1ae BOOT-INF/classes/static/static/media/icons.912ec66d.svg
23284 Defl:N 9111 61% 2018-06-17 09:44 254b8443 BOOT-INF/classes/static/static/media/loader-big.a770b679.gif
165548 Defl:N 98167 41% 2018-06-17 09:44 c544bc5c BOOT-INF/classes/static/static/media/icons.b06871f2.ttf
77160 Defl:N 77153 0% 2018-06-17 09:44 5517c3a7 BOOT-INF/classes/static/static/media/icons.af7ae505.woff2
2765 Defl:N 1186 57% 2018-06-17 09:44 b229e926 BOOT-INF/classes/static/static/media/rw-widgets.792dcd18.svg
28123 Defl:N 27946 1% 2018-06-17 09:44 fb476e5a BOOT-INF/classes/static/static/media/flags.9c74e172.png
所以文件似乎已经复制过来没有任何问题 - 我通过将文件加载到http://bluejamesbond.github.io/CharacterMap/来确认文件很好
现在,如果我选择其中一个显示在错误消息中的 URL,例如http://localhost:8080/static/media/icons.af7ae505.woff2
并在我的浏览器中直接导航到它下载的 URL。然后检查文件
-rw-rw-r-- 1 pram pram 139423 Jun 17 10:25 icons.af7ae505.woff2
与构建工件的目标区域中的文件相比
-rw-rw-r-- 1 pram pram 77160 Jun 17 09:44 icons.af7ae505.woff2
文件大小不同。
下载的文件(在 sublime 中打开时)显示为
774f 4632 0001 0000 0001 2d68 000d 0000
0002 efbf bdef bfbd 0001 2d0e 0004 01ef
bfbd 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 3f46 4654 4d1c 1a20 0660
00ef bfbd 7211 080a efbf bdef bfbd 28ef
bfbd efbf bd58 0136 0224 03ef bfbd 700b
efbf bd10 0004 2005 efbf bd06 07ef bfbd
755b 5209 7247 61ef bfbd efbf bdef bfbd
2aef bfbd 0def bfbd 27ef bfbd 3def bfbd
3aef bfbd 1a26 efbf bdef bfbd 3d72 efbf
bd2a 0a02 19ef bfbd 1aef bfbd efbf bd5d
0474 07ef bfbd 45ef bfbd 6eef bfbd efbf
bdef bfbd efbf bdef bfbd efbf bdef bfbd
3146 efbf bd0e efbf bd40 efbf bdef bfbd
efbf bdef bfbd 7cef bfbd efbf bd14 0866
efbf bd6d efbf bd60 efbf bd24 d891 efbf
bd40 645b 4251 1124 285b 553c 2b28 efbf
bdef bfbd 4050 efbf bd35 1eef bfbd 60ef
等等
当在 vi 中打开时
wOF2^@^A^@^@^@^A-h^@^M^@^@^@^B��^@^A-^N^@^D^A�^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@?FFTM^\^Z ^F`^@�r^Q^H
��(��X^A6^B$^C�p^K�^P^@^D ^E�^F^G�u[R rGa���*�^M�'�=�:�^Z&��=r�*
我spring-boot-starter-security
在 WebSecurity 文件中启用了以下内容
@Override
public void configure(org.springframework.security.config.annotation.web.builders.WebSecurity web) throws Exception {
web.ignoring().antMatchers(
"/asset-manifest.json",
"/favicon.ico",
"/index.html",
"/service-worker.js",
"/static/**"
);
}
谁能确定什么可以修改字体?
解决方案
推荐阅读
- html - 单击元素时如何实现popover的相同位置
- javascript - Webpack 不处理 CSS 背景图片
- google-sheets - 带有查询索引的数组公式
- python-3.x - np.multiply.reduce 不会抛出 FloatingPointError 但单元素乘法会抛出
- vue.js - Vue(Nuxt)中的音频加载事件
- c# - 在 SwaggerUI 中隐藏/显示控制器(可配置)
- javascript - 基于嵌套数组展平对象数组
- java - 有没有办法检查 FXML 中的鼠标右键单击?
- javascript - JavaScript插入分隔符并将数组的内容连接为一个字符串
- python - 根据列子集删除重复项,保留列 E 中具有最高值的行,如果 E 中的值相等,则列 B 中具有最高值的行