linux下,我把运行jfreechart

在linux下,我把运行jfreechart相应的包jfreechart-0.9.18.jar、jcommon-0.9.3.jar等已经copy到tomcat的common/lib下,但是, 程序运行还是提示如下错误:
java.lang.NoClassDefFoundError
org.jfree.chart.axis.Axis.<init>(Axis.java:180)
at org.jfree.chart.axis.CategoryAxis.<init>(CategoryAxis.java:137)
at org.jfree.chart.axis.CategoryAxis3D.<init>(CategoryAxis3D.java:78)
at org.jfree.chart.ChartFactory.createBarChart3D(ChartFactory.java:507)

解决的办法是:
编辑/etc/profile文件,在最后加入export CATALINA_OPTS='-Djava.awt.headless=true'
即可

 设置Java启动参数“ -Djava.awt.headless=true”,以Tomcat为例:
set CATALINA_OPTS = " -Djava.awt.headless=true "
export CATALINA_OPTS

 

 

问题一:

这是你最可能会遇到的错误信息(类似):

Can't connect to X11 window server using ':0.0'......

这是因为jfreechart的在unix-like系统中需要访问java awt库提供的图形功能,而unix下的绝大多数版本的java awt类库都需要x server提供的一些功能。而基本上作服务器的系统都没有启动x server(甚至根本没安装)的,所以就出现了以上的提示信息。

解决的办法有很多,下面只介绍一个最简单的做法:

在你应用服务器的启动脚本中添加以下参数

-Djava.awt.headless=true

或以下指令

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

再重启应用服务器就可以了,假如你用的是resin那么就在$RESIN_HOME/bin/start.sh中添加。

对于这个问题的更详细的信息请查看以下链接:

http://www.idautomation.com/kb/xwindow-error.html

问题二:

图像文件已经生成,但是页面显示不出来,这个主要是路径错误

要使用"/servlet/DisplayChart?filename=" + filename,先要在你的web应用程序的配置文件web.xml中添加以下配置信息


DisplayChart org.jfree.chart.servlet.DisplayChart


DisplayChart
/servlet/DisplayChart

这个在jfreechart的配置文件中也有说明。

问题三

中文标签的乱码问题
如果你使用是jdk5.0那么恭喜你,你只要在$JAVA_HOME/jre/lib/fonts下建立fallback文件夹,然后copy中文字体文件进去,重启应用程序服务器就ok了;
(中文字体文件可以是windows/fonts/simsum.ttf 要付费;/usr/share/fonts/chinese/TrueType/gXXX.ttf ;
或者另外下载VeraSansYuanTiMonoXXXX.ttf)

如果你使用的是jdk1.4XXX,那么很不幸你遇到一个big problem咯,你要做三件事:
1)根据网上的介绍修改jre的字体配置文件,添加中文字体;
2)修改jfreechart的source code(主要是org.jfree.chart包),把类似"new Font(...)"代码改成你添加的字体,如"new Font("宋体/Vera Sans YuanTi Mono",Font.BOLD, 18)";
3)通过以上两步,图表的中文字体基本已经出来了,可能你发现图表的title还是乱码,这就要通过程序设定了,示例代码如下:

String title = new String("水果销量统计图");
TextTitle texttitle= new TextTitle(title);
texttitle.setFont(new java.awt.Font("宋体", Font.BOLD, 18));
JFreeChart chart = ChartFactory.createBarChart3D(title,
"水果",
"销量",
dataset,
PlotOrientation.VERTICAL,
false,
false,
false);
chart.setTitle(texttitle);

注意事项:
jfreechart共包含有一下类库:jcommon-0.9.6.jar jfreechart-0.9.21.jar servlet.jar gnujaxp.jar
只有jcommon-0.9.6.jar jfreechart-0.9.21.jar是必须的;
servlet.jar和gnujaxp.jar一般是不需要的,否则跟虚拟机或服务器的自带类库重复的话会产生不可预知的一些问题。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值