问题描述:代码在windows环境中运行在linux环境中报错:Font ‘宋体’ is not available to the JVM,其实就是字体找不到,但是跟着网上很多解决方式也没解决问题,系统安装字体、项目内放置字体文件和jvm安装字体包都尝试过,结果都不行,最后字体文件打包成jar包引用尝试成功,下面展示具体如何做的。
1、将字体打成jar包
1、首先打开制作模板工具TIBCO Jaspersoft Studio
2、点击windows
3、点击preferences
4、选择字体
5、填写信息
注意:我是在windows中安装的这个工具,并且windows中已有“宋体”字体文件,我第一次直接将TrueType (.ttf)路径写为了此电脑中字体文件的路径,这个路径应该写为你部署项目服务器的字体路径,还有一个注意点是我用的宋体,我直接将windows中宋体上传到了linux服务器,但是最后还是不行,原因是windows中的宋体字体文件是ttc格式的,我们需要下载为ttf格式。
源码中如果不是TTF和OTF格式会有其他处理方式。
6、导出
给项目加入jar包
1、新加lib文件夹
这里咋们可以看一下jar中都有什么,其实就是配置,根本没有字体文件,所以这个字体文件需要自己手动放上去。
看这儿我的路径是/home/water/back/simsun.ttf,所以你得把这个字体文件下载下来传到linux服务中。
2、配置maven
2.1、加入依赖
<dependency>
<groupId>simsun</groupId>
<artifactId>simsun</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/simsun.jar</systemPath>
</dependency>
2.2、打包配置
<resources>
<resource>
<directory>lib</directory>
<targetPath>/BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</resources>
将jar包打包到/BOOT-INF/lib/下
到了这儿就剩打包部署到linxu系统中了,别忘了上传字体文件,别忘了上传字体文件,别忘了上传字体文件,重要的事说三遍,并且路径需要和你配置的一模一样。
总结
不知道为什么其他方式都不行,看别人的都好像能行,但是自己试了很多次都不行,都看了源码中怎么去加载字体了,并且发现“项目内放置字体文件”这种方式和打成jar包几乎一致,但是有细小区别如下图
jar包
项目内放置字体文件配置
看出区别了吧,我也不知道是不是因为这个问题,我也没去试了。
参考
UOS Font ‘宋体‘ is not available to the JVM
解决 Font ‘宋体’ is not available to the JVM
maven引入本地jar包的方法
JasperReport 中踩过的坑