window、mac、安装过“x window”的centos系统JFreeChart 测试都没有问题。

但是部署到服务器上也遇到

java.awt.HeadlessException
 at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
 at java.awt.Window.<init>(Window.java:536)
 at java.awt.Frame.<init>(Frame.java:420)
 at javax.swing.JFrame.<init>(JFrame.java:233)
 at org.jfree.chart.ChartFrame.<init>(ChartFrame.java:78)
 at org.jfree.chart.ChartFrame.<init>(ChartFrame.java:66)
 at com.aebiz.app.web.modules.controllers.open.utils.tupian.ztrz(tupian.java:105)
 at com.aebiz.app.web.modules.controllers.open.utils.PdfAndMoudel.report(PdfAndMoudel.java:74)
 at com.aebiz.app.assess.modules.services.impl.EvaluateServiceImpl$1.call(EvaluateServiceImpl.java:259)
 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 at java.lang.Thread.run(Thread.java:745)

在网上查了博客,

使用jfreechart生成图片,在windows下没问题,在linux下 Could not initialize class org.jfree.chart.JFreeChart

因为linux下默认不能初始化JFreeChart

解决方法

在bin下的catalina.sh添加以下行

  1. export  CATALINA_OPTS="-Djava.awt.headless=true"   

直接加入段首即可(这时发现图片是成功生成,但是依旧报错)

进行上一步操作,依旧保错,tupian.java:105报错在这一行代码:

      //使用ChartFrame对象显示图像
// ChartFrame frame = new ChartFrame("xyz",chart);
// frame.setVisible(false);
// frame.pack();
后来,注释掉代码后。重新部署,图片加载到html和pdf文件成功。