java读取字体文件tff,报错java.awt.FontFor

2020-01-02  本文已影响0人  黎凡s

使用java加载外部字体,报错java.awt.FontFormatException: bad table, tag=一串数字,实际上是字体文件被损坏导致的。
其根本原因是maven打包时,如果开启了filtering,会在打包时重新编译资源目录下的文件,导致某些类型的文件编译后无法使用。代码如下:

    <build>
        <finalName>${artifactId}</finalName>
        <!-- directory下文件输出目录 -->
        <outputDirectory>src/main/webapp/WEB-INF/classes</outputDirectory>
        <resources>
            <resource>
                <!--指定资源目录  -->
                <directory>src/main/resources</directory>
                <!-- 开启过滤,将maven中声明的参数替换directory下的文件中的参数 -->
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
解决方法为,在build标签下添加如下代码:
<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <nonFilteredFileExtensions>
                        <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
                        <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
                        <nonFilteredFileExtension>xls</nonFilteredFileExtension>
                        <nonFilteredFileExtension>zip</nonFilteredFileExtension>
                        <nonFilteredFileExtension>cer</nonFilteredFileExtension>
                        <nonFilteredFileExtension>pfx</nonFilteredFileExtension>
                        <nonFilteredFileExtension>py</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
            </plugin>
        </plugins>

通过在资源文件处理插件中排除对应类型的文件,即可避免问题

上一篇下一篇

猜你喜欢

热点阅读