2

Jsp

<img alt="" src='<%=url+"/chartDemo/servlet/ChartDemoServlet"%>'>

jfreechartを使用するための上位コードがjsp内にあります。私はこのアプリケーションをウィンドウマシンのTomcat内にデプロイしましたが、その動作は完璧です。しかし、LinuxマシンのTomcat内に同じファイルをコピーすると、チャートを除くjspの他のすべてのコンテンツが表示されます。

Linux Tomcatを使用してWebアプリケーションを実行すると、チャートが表示されないのはなぜですか?

URLとしてサーブレットを直接入力すると、次の例外が見つかりました

java.lang.Error: Probable fatal error:No fonts found.
    sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1088)
    sun.font.FontManager.initialiseDeferredFont(FontManager.java:967)
    sun.font.CompositeFont.doDeferredInitialisation(CompositeFont.java:254)
    sun.font.CompositeFont.getSlotFont(CompositeFont.java:334)
    sun.font.CompositeStrike.getStrikeForSlot(CompositeStrike.java:77)
    sun.font.CompositeStrike.getFontMetrics(CompositeStrike.java:93)
    sun.font.FontDesignMetrics.initMatrixAndMetrics(FontDesignMetrics.java:358)
    sun.font.FontDesignMetrics.<init>(FontDesignMetrics.java:349)
    sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:301)
    sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:790)
    org.jfree.text.G2TextMeasurer.getStringWidth(G2TextMeasurer.java:79)
    org.jfree.text.TextUtilities.nextLineBreak(TextUtilities.java:294)
    org.jfree.text.TextUtilities.createTextBlock(TextUtilities.java:235)
    org.jfree.chart.title.TextTitle.arrangeRR(TextTitle.java:628)
    org.jfree.chart.title.TextTitle.arrange(TextTitle.java:497)
    org.jfree.chart.JFreeChart.drawTitle(JFreeChart.java:1316)
    org.jfree.chart.JFreeChart.draw(JFreeChart.java:1204)
    org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1404)
    org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1384)
    org.jfree.chart.ChartUtilities.writeChartAsPNG(ChartUtilities.java:183)
    org.jfree.chart.ChartUtilities.writeChartAsPNG(ChartUtilities.java:136)
    com.ChartDemoServlet.doPost(ChartDemoServlet.java:170)
    com.ChartDemoServlet.doGet(ChartDemoServlet.java:64)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
4

1 に答える 1

1

はい、@トムは正しいです。使用されているフォントを探します。以前は、デスクトップのない Linux ではフォントが利用できず (いわゆるヘッドレス環境)、 GraphicsEnvironment.isHeadless() およびSystem.getProperty("java.awt.headless");. ただし、おそらく単純にフォントをコピーして registerFont を実行できます。

于 2012-05-26T10:44:21.203 に答える