用JfreeChart生成图片后,在WINDOWS字体正常,但在LINUX下字体变成方块.为什么啊,如何解决.

解决方案 »

  1.   

    设置字体编码.使用utf-8编码机制.
      

  2.   

    我的代码:<%
    double [][] data=new double[][]{{672,766,223,540,126},{325,521,210,340,106},{332,256,523,240,526}};
    String [] rowKeys={"111","222","333"};
    String [] columnKeys={"はい","ありがとう","你","hello","world"};CategoryDataset dataset=DatasetUtilities.createCategoryDataset(rowKeys,columnKeys,data);JFreeChart chart=ChartFactory.createBarChart3D("",null,null,dataset,PlotOrientation.VERTICAL,true,false,false);chart.setBackgroundPaint(Color.WHITE);String filename=ServletUtilities.saveChartAsPNG(chart,500,300,null,session);String graphURL=request.getContextPath()+"/DisplayChart?filename="+filename;%>
    <img src="<%=graphURL%>" width=600 height=500 border=1 usemap="#<%=filename%>">
      

  3.   

    两个解决办法:
    1、你的服务器上面是不是有显示器,有则用启动和你tomcat一样的用户在显示器端来登录主机,这样中文显示应该是正常的。当然前提应该是你的linux系统本身就要支持中文才行
    2、没有显示器,你就需要一个叫Xvfb的进程,在unix下面一般是在/usr/X11R6/bin目录下面,linux我不是很清楚在哪个目录下面,你可以用find搜索一下
    你需要openwin的支持执行一下下面的命令:
    ----------------------------------------
    ps -ef|grep vfb
    ----------------------------------------
    看看是不是存在这样的进程不存在则激活一下这个进程,然后应该就是可以了
    也可以看一下环境变量,命令如下:
    ----------------------------------------
    echo $DISPLAY
    ----------------------------------------
    看看输出是什么
    你在tomcat shell里面就对应配置成这样,应该就是可以了的