字体“Arial”不可用于JVM
我正在开发一个使用Jasperreports的Java项目。 我在其他项目中使用相同的技术多次工作,在尝试在Unix环境中打印报告时遇到了同样的问题。
我的项目使用:
- JBoss 4.2.3.GA
- Java 1.6
- Jasperreports 4.7.0
抛出的exception是:
net.sf.jasperreports.engine.util.JRFontNotFoundException: Font 'Arial' is not available to the JVM. See the Javadoc for more details.
我找到了一个解决这个问题的通用解决方案,并且确实有效:
sudo apt-get install msttcorefonts
但是,我想了解Jasper如何使用字体,以及如何搜索Unix环境中安装的字体。 也许更好的问题是:JVM如何处理原生字体? 谁能给我一个关于这个主题的详细解释? 系统字体如何在运行时为JVM提供?
Java要求操作系统提供字体。 工作原理取决于操作系统。
如果您不想轻松下载jar子的麻烦,那么只需转到软件中心并单击安装Ubuntu限制额外内容即可 。 此软件包不仅会安装MS字体,还会为版权受限的应用程序提供其他支持。
这适用于Ubuntu Systems。
我在Jasper 5.0上也遇到了同样的问题。 我已按照以下步骤操作:
- 放置
jasper-fonts.jar
; - 在linux中安装缺少的字体;
- 重启JBoss服务器。
2015年更新:
将此添加到(或取消注释)/etc/apt/sources.list
deb http://us.archive.ubuntu.com/ubuntu/ trusty multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ trusty multiverse deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse
然后运行:
sudo apt-get update sudo apt-get install msttcorefonts
对于OpenSuse
在SO fc-list上validation字体是不可用的 grep“Arial”
安装以下rpm sudo rpm -ivh msttcore-fonts-2.0-3.noarch.rpm
或从页面下载:
http://www.mjmwired.net/resources/mjm-fedora-f11.html#ttf
安装rpm
再次validationfc-list | grep“Arial”
重新启动应用程序服务器