java.lang.NoClassDefFoundError: Could not initialize class org.jfree.chart.JFreeChart

  最近在进行利用jfreechart生成图表时发现,项目在本地运行的好好的,一部署到服务器(linux系统)上就不行,报这样的错误: java.lang.NoClassDefFoundError: Could not initialize class org.jfree.chart.JFreeChart,后来经过搜索解决了,详见如下:

  1.首先,这与服务器上操作系统是linux系统有关,因为linux系统本身是无图形化界面的,所以在JFreeChart chart = ChartFactory.createBarChart3D("外呼结果", "", "数值", dataset, PlotOrientation.VERTICAL,false , true, false);时报了错误

  2.Tomcat的修改如下:

  打开 %Tomcat_home%/bin/catalina.sh 文件在-Djava.io.tmpdir="$CATALINA_TMPDIR"后,启动Tomcat的脚本中加上:-Djava.awt.headless=true \

  "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS
  -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS"
  -classpath "$CLASSPATH"
  -Dcatalina.base="$CATALINA_BASE"
  -Dcatalina.home="$CATALINA_HOME"
  -Djava.io.tmpdir="$CATALINA_TMPDIR"
  -Djava.awt.headless=true

  保存后,重新启动就可以处理图形了。

  3.headless模式本身是系统模式的一种,是在缺少显示屏、键盘或者鼠标时的系统配置。听起来不可思议,但事实上你可以在这中模式下完成不同的操作,甚至是用图形数据也可以。哪里才能用到此模式呢?想想你的应用不停的生成一张图片,比如,当用户每次登陆系统时都要生成一张认证图片。当创建图片时,你得应用既不需要显示器也不需要键盘。让我们假设一下,现在你的应用有个主架构或者专有服务器,但这个服务没有显示器,键盘或者鼠标。理想的决定是用环境的大量视觉计算能力而不是非视觉特性。在Headless模式下生成的图片可以传递到Headful系统进行更深层次渲染。 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。