我在linux和windows中使用相同的jfreechart代码和zkoss。
当我在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)
答案 0 :(得分:12)
在Ubuntu下你可以通过
安装字体 sudo apt-get install ttf-dejavu
或者如果您使用CentOS,您可以通过
安装字体 yum install dejavu*
答案 1 :(得分:3)
在开放的jdk中似乎有问题。 Here is a link给出了在open jdk中修复此问题的解决方案。如果没有使用sun jdk的问题,请尝试安装sun jdk。
答案 2 :(得分:2)
在我的情况下(debian wheezy)安装dejavu字体并不能解决问题。
我在安装fontconfig包之后解决了
sudo apt-get install fontconfig
答案 3 :(得分:0)
尝试在Windows
fonts目录中放置应用程序所需的相同Linux
字体。
答案 4 :(得分:0)
Debian 9 Stretch 安装字体:sudo apt-get install ttf-dejavu 安装fontconfig:sudo apt-get安装fontconfig 重建字体缓存:fc-cache -f -v 重新启动Tomcat
作品