Font \"微软雅黑\" is not available to the JVM. See the Javadoc for more details.

1. 背景

  在工作中使用JasperReport生成报表,会出现错误Font \"微软雅黑\" is not available to the JVM. See the Javadoc for more details.

2. 分析

  开发环境是window7,并没有出现该问题。测试环境是linux,出现该错误。根据错误的字面意思,初步设想是linux服务器上没有该字体。

3. 安装字体

  • 将window7上的中文字体安装到linux下
  • window7下字体所在位置:C:\Windows\Fonts。如下所示:

  • 将简体中文字体复制到linux下,保存路径为:/usr/share/fonts/chinese/TrueType。如下所示,可视化工具为WinSCP:

  • 使用命令安装字体:

  cd /usr/share/fonts/chinese/TrueType

  mkfontscale

  mkfontdir

  fc-cache –fv

  • 查看安装的字体:

  fc-list :lang-zh

  注意图中所选的字体微软雅黑,左边中中文表示,右边是英文表示

4. 再分析

  若重启服务后,问题已经解决,那么恭喜。但是我在实际情况下,很明确的linux下已经安装了字体,但还是提示错误。这很可能是环境不一样引起的问题,所以我想到了远程debug调试,远程调试配置:http://www.cnblogs.com/zhuqianchang/p/9044699.html

报错的位置在FontUtil.java350行,查看源码如下:

  根据源码分析,先获取系统的字体加入缓存,缓存是一个Set集合,然后判断指定字体是否在集合中。所以debug进去后,查看缓存中的字体,发现确实不存在字体“微软雅黑”,但是却发现了字体“Microsoft YaHei”。所以问题明确了,虽然安装了字体,但linux系统语言是英语,所以导致contains方法并不能匹配到字体“微软雅黑”,所以报错。

5. 修改系统语言

  • 查看当前语言

  echo $LANG

  • 修改语言

  vi /etc/sysconfig/i18n

  英文:LANG="en_US.UTF-8"

  中文:LANG="zh_CN.UTF-8"

  • 即时生效

  source /etc/sysconfig/i18n

6. 重启服务

  根据源码,系统字体保存在缓存中,所以需要重启服务。重启后,问题顺利解决

原文地址:https://www.cnblogs.com/zhuqianchang/p/9045434.html

时间: 2024-10-09 10:20:43

Font \"微软雅黑\" is not available to the JVM. See the Javadoc for more details.的相关文章

【IOS】IOS/mac系统使用微软雅黑等字体

IOS系统的默认字体总是给人模糊发虚的感觉,而微软雅黑字体字形略呈扁方而饱满,笔画简洁而舒展,易于阅读.那么怎么在mac或者ios中使用微软雅黑字体呢.下面简要说明.Launchpad-字体册.字体ttf文件是通用的.1.获取微软雅黑字体在windows系统中进入C:\WINDOWS\Fonts,找到微软雅黑(True Type)字体,直接将其拖出桌面或者其他文件夹.[最后最好把拖出来的字体复制进C:\WINDOWS\Fonts,这么做是因为如果直接在C:\WINDOWS\Fonts中是没有复制

网站使用微软雅黑需要版权吗

转自 :http://rpsh.net/archives/font-licensing-for-the-web/ 网站能使用微软雅黑字体吗?是否会构成侵权?微软雅黑有版本吗?  最近做网站,听说雅黑有版权不能用,但是使用了黑体 网站又贼丑无比,惨不忍睹 资深架构师搜了个这个文章, 分享给大家 结论: 在 CSS 中使用 body{ font-family: ‘microsoft yahei’ } 是在合法的使用范围内, 但是不容许的是在CSS 中使用 @font-face 的方式引入字体文件.

css调用字体 没装微软雅黑,用css写@font-face让其能显示微软雅黑字体

在设计布局网页时 经常想要用一些比较好看的字体,比如微软雅黑,这个字体在近年来在网页设计中运用越来越平常, 然而所使用的字体也只有自己能看到 到别的机子上 又恢复了原来的宋体神马的. 经过一位高手的提点,能用CSS直接实现,查阅了部分资料 并经过测试 总结下列方法来实现网页中的自定义字体我们很容易发现EOT字体仅仅对于IE浏览器支持 面对庞大的IE用户 EOT字体的重要性也就不说了 对于其他浏览器由于直接支持TTF字体 就不多介绍 只是在定义样式时 注意下浏览器的兼容问题就可以了 由于各浏览器对

前端首选微软雅黑字体设定

首先可以用 { font-family: 微软雅黑: } 如果这样不行还可以用: { font-family: "Microsoft YaHei" ! important; } 使用中最好不用中文,中文的话,英文系统就显示不了了.(前提是英文系统也有这个字体) CSS中设置的字体 考虑到兼容性,我们总会在CSS中队字体进行一些设置,这类设置往往设置在body标签上,无论是人人网,腾讯网,淘宝网,开心,新浪,网易等都是如此.以下为各个大型网站的body的字体设置: 人人网: body{f

移动端h5不支持font-family里面的楷体、微软雅黑等字体

移动端不支持pc端的各种字体.移动端各种系统有各自的字体: ios 系统 默认中文字体是Heiti SC 默认英文字体是Helvetica 默认数字字体是HelveticaNeue 无微软雅黑字体 android 系统 默认中文字体是Droidsansfallback 默认英文和数字字体是Droid Sans 无微软雅黑字体 总结: 各个手机系统有自己的默认字体,一般不支持我们常用字体,例如微软雅黑等: 如无特殊需求,手机端无需定义中文字体,使用系统默认即可. 英文字体和数字字体可使用 Helv

TCPDF微软雅黑字体

TCPDF是可以实现将html转为pdf格式的php插件,使用例子在https://tcpdf.org/examples/:但微软雅黑字体需要自己添加: 在命令窗口(windows下为dos窗口)切换到tcpdf目录的tools目录,msyh.ttf也复制到tools目录下 tools目录下窗口运行命令生成微软雅黑字体 php ./tcpdf_addfont.php -b -t msyh.ttf 在调用tcpdf代码中设置字体 $pdf = new TCPDF(PDF_PAGE_ORIENTAT

关于mac 和其它osx系统添加 微软雅黑字体 适用于安装字体报错或者安装失败

问题起因: 公司同事使用sketch的设计软件,老板要求字库必须使用微软雅黑.但是使用威锋搜索到的微软雅黑字体 安装出现问题,字体只有常规,没有轻体和粗体.其它2个字库点击安装,或者在finder-应用程序--字体册里面添加 总是不成功. 解决办法: 1 mac机器上的word 默认是带微软雅黑字体的 finder-word程序-右键进入安装包-在搜索里面输入tt-找到-msyh文件(微软雅黑轻体)-msyhbd(微软雅黑粗体)-msyhl(微软雅黑常规) 复制到桌面. 如果电脑上没有的朋友可以

CSS无需Webfont实现近似「微软雅黑Light」的字体效果

在网页制作中,美观的字体能很大程度上提升一个网页的整体外观浏览效果(说白了就是提升逼格),但受各种因素的影响(例如中文字体应用Webfont的麻 烦),使开发者在制作过程中不得不使用“Web安全字体”,这使网页的外观效果大幅下降.今天在改模板的过程中偶然发现一个很笨的方法,实现近似微软雅黑 Light的字体效果. 实际上「微软雅黑Light」字体就是相对于「微软雅黑」字体较细,但是它的显示效果却要让人觉得舒适很多,只要字体不会太小,显示效果还是不错的. 所以直接用font-weight属性设置字

ubuntu14.04安装微软雅黑

1.从网上下载微软雅黑字体或从windows7系统中复制一个(字体名一般为:msyh.ttf) 2.执行 cd /usr/share/fonts sudo mkdir yahei sudo chmod 755 yahei 把msyh.ttf放到yahei目录下,到字体设置里面就能看到微软雅黑了.