8

我在 linux 和 windows 中使用与 zkoss 相同的 jfreechart 代码。

当我在 Windows 中运行相同的代码时,它运行良好,但在 linux 中,它给出了与字体相关的错误,如下所示......

谁能建议我如何永久解决此问题?

java.lang.Error:可能的致命错误:未找到字体。

sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1087)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1070)
sun.font.FontManager.initialiseDeferredFont(FontManager.java:959)
sun.font.FontManager.findOtherDeferredFont(FontManager.java:898)
sun.font.FontManager.findDeferredFont(FontManager.java:915)
sun.font.FontManager.findFont2D(FontManager.java:1903)
sun.font.FontManager.findFont2D(FontManager.java:1864)
java.awt.Font.getFont2D(Font.java:477)
sun.font.FontManager.getFont2D(Native Method)
sun.font.FontDesignMetrics.initMatrixAndMetrics(FontDesignMetrics.java:356)
sun.font.FontDesignMetrics.<init>(FontDesignMetrics.java:349)
sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:301)
sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:787)
org.jfree.text.TextFragment.calculateDimensions(TextFragment.java:229)
org.jfree.text.TextLine.calculateDimensions(TextLine.java:190)
org.jfree.text.TextBlock.calculateDimensions(TextBlock.java:171)
org.jfree.chart.block.LabelBlock.arrange(LabelBlock.java:316)
org.jfree.chart.block.BorderArrangement.arrangeNN(BorderArrangement.java:210)
org.jfree.chart.block.BorderArrangement.arrange(BorderArrangement.java:137)
org.jfree.chart.block.BlockContainer.arrange(BlockContainer.java:179)
org.jfree.chart.block.CenterArrangement.arrangeNN(CenterArrangement.java:284)
org.jfree.chart.block.CenterArrangement.arrange(CenterArrangement.java:98)
org.jfree.chart.block.BlockContainer.arrange(BlockContainer.java:179)
org.jfree.chart.block.FlowArrangement.arrangeNN(FlowArrangement.java:365)
org.jfree.chart.block.FlowArrangement.arrangeRR(FlowArrangement.java:283)
org.jfree.chart.block.FlowArrangement.arrange(FlowArrangement.java:158)
org.jfree.chart.block.BlockContainer.arrange(BlockContainer.java:179)
org.jfree.chart.title.LegendTitle.arrange(LegendTitle.java:501)
org.jfree.chart.JFreeChart.drawTitle(JFreeChart.java:1330)
org.jfree.chart.JFreeChart.draw(JFreeChart.java:1220)
4

5 回答 5

17

在 Ubuntu 下,您可以通过以下方式安装字体

    sudo apt-get install ttf-dejavu

或者如果你使用 CentOS,你可以安装字体

    yum install dejavu*
于 2013-10-14T07:24:32.687 回答
3

在我的情况下(debian wheezy)安装 dejavu 字体并不能解决问题。

安装fontconfig包后我已经解决了

sudo apt-get install fontconfig

于 2015-02-04T20:17:17.777 回答
3

在开放 jdk 中似乎有问题。这是在开放 jdk 中解决此问题的解决方案的链接。如果使用 sun jdk 没有问题,请尝试安装 sun jdk。

于 2012-12-28T14:01:20.600 回答
0

尝试将Windows应用程序所需的相同字体放在Linux字体目录中。

于 2012-12-28T08:09:34.920 回答
0

Debian 9 Stretch 安装字体:sudo apt-get install ttf-dejavu 安装 fontconfig:sudo apt-get install fontconfig 重建字体缓存:fc-cache -f -v 重启 Tomcat

作品

于 2019-05-07T14:30:07.123 回答