首页 > 解决方案 > 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/**"
        );
    }

谁能确定什么可以修改字体?

标签: javaspringspring-bootcreate-react-app

解决方案


推荐阅读