acerbic coffee
走自己的路,讓別人跑步
BlogJava
首頁
新隨筆
新文章
聯系
聚合
管理
posts - 26,comments - 14,trackbacks - 0
<
2014年2月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆分類
個人筆記(18)
隨筆檔案
2009年9月 (1)
2009年7月 (2)
2008年7月 (1)
2008年6月 (2)
2008年5月 (2)
2007年9月 (1)
2007年8月 (1)
2007年5月 (1)
2007年4月 (5)
2007年3月 (1)
2006年11月 (4)
2006年10月 (8)
文章分類
articles(5)
個人記錄(9)
文章檔案
2013年3月 (1)
2009年7月 (1)
2009年6月 (1)
2007年2月 (1)
2006年11月 (6)
2006年10月 (8)
收藏夾
bank(4)
html學習+經典(4)
javascript(7)
java學習(10)
ruby(3)
框架(struts+jsf+spring...)(4)
ajax中國(ajax開發)
ajax開發簡略
其他
下載
孫維琴個人網站
搜索
積分與排名
積分 - 46893
排名 - 1038
最新評論
1.?re: JFreeChart在linux端圖片顯示亂碼問題解決
樓上絕對正解
--haer
2.?re: JFreeChart在linux端圖片顯示亂碼問題解決
是的@劉鑫
--zzs
3.?re: JFreeChart在linux端圖片顯示亂碼問題解決
絕對正解 @liuyang
--bincrack
4.?re: JFreeChart在linux端圖片顯示亂碼問題解決[未登錄]
樓上正解,感謝!
--liuyang
5.?re: tomcat啟動加載xml文件的配置在什么地方?
要在host 節點配置
--hout
閱讀排行榜
1.?無意中查sql中as的用法搜索到的一些經典的sql語句(6922)
2.?JFreeChart在linux端圖片顯示亂碼問題解決(4021)
3.?MyEclipse快捷鍵與插件大全(3962)
4.?tomcat啟動加載xml文件的配置在什么地方?(2061)
5.?tomcat服務器配置chm.rar等文件下載!(1757)
評論排行榜
1.?JFreeChart在linux端圖片顯示亂碼問題解決(5)
2.?學習struts有那么難么?(5)
3.?今天自己做得一個js動態改變圖片的程序!!(1)
4.?無意中查sql中as的用法搜索到的一些經典的sql語句(1)
5.?tomcat啟動加載xml文件的配置在什么地方?(1)
JFreeChart在linux端圖片顯示亂碼問題解決
最近項目遇到linux上顯示JFreeChart圖形,在網上搜索到了很多關于此方面的信息,詳細的也有,不過大多環境都是redhat+jdk1.4但乍一看說得不太清楚,搞了半天終于搞定了,現解釋,
環境:suse10,jdk1.4.2
相同部分就不再多說,以下部分內容,挑csdn上一個詳細的文章粘貼出來,順便總結一下
一、 錯誤描述
基本上的錯誤都是以下錯誤
1
java.lang.InternalError: Can
'
t connect to X11 window server using
'
:
0.0
'
as the value of the DISPLAY variable.
2
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
3
at sun.awt.X11GraphicsEnvironment.
<
clinit
>
(X11GraphicsEnvironment.java:
125
)
4
at java.lang.Class.forName0(Native Method)
5
at java.lang.Class.forName(Class.java:
140
)
6
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:
62
)
7
at java.awt.Font.initializeFont(Font.java:
309
)
8
at java.awt.Font.
<
init
>
(Font.java:
345
)
9
at org.jfree.chart.plot.PiePlot.
<
clinit
>
(PiePlot.java:
186
)
10
at org.jfree.chart.ChartFactory.createPieChart3D(ChartFactory.java:
416
)
錯誤原因么,大概就是jvm找不到字體文件
二、問題解決:
寫一個測試系統環境的小程序
1
public
class
PrintLocale
{
2
public
static
void
main(String[] args)
{
3
System.out.println(System.getProperty(
"
user.language
"
));
4
System.out.println(System.getProperty(
"
user.region
"
));
5
System.out.println(System.getProperty(
"
file.encoding
"
));
6
System.out.println(System.getProperty(
"
os.version
"
));
7
}
8
}
9
例如輸入結果:
zh
CN
GB2312
2.4.19-4GB
對于我們來說關注的地方其實只有第一行“zh”,說明目前環境是簡體中文,
從Sun的文檔"Adding Fonts to the Java Runtime"[參見參考文獻1]中,我們可以得知: 在英文環境下,字體屬性由無后綴的font.properties 定義。為了一些操作系統的特殊問題,字體屬性文件的名字可以加入操作系統的版本號作為后綴。例如,Solaris 2.5.1 不支持 TrueType 字體,所以字體屬性文件font.properties.5.5.1 將只包含 F3 字體。在大多數操作系統中,版本后綴的值由System.getProperty("os.version")來確定。
如果環境是日文、韓文、簡體中文或繁體中文,就必須使用相應于特定環境的 font.properties 文件。這些文件可以通過文件名后邊加上相應的國家或者locale后綴識別,格式為font.properties.<locale>。該<locale>實際上由<language>_<region>_<encoding>三部分構成。而<language>、<region>和<encoding>分別對應了系統屬性(由System.getProperty方法返回的字符串)"user.language"、"user.region"和"file.encoding"。而這個font.properties.<locale>名也可以跟操作系統的版本結合使用。
概括的講,Java按照以下順序搜索字體屬性文件:
1
font.properties.
<
language
>
_
<
region
>
_
<
encoding
>
.
<
osVersion
>
2
font.properties.
<
language
>
_
<
region
>
_
<
encoding
>
3
font.properties.
<
language
>
_
<
region
>
.
<
osVersion
>
4
font.properties.
<
language
>
_
<
region
>
5
font.properties.
<
language
>
_
<
encoding
>
.
<
osVersion
>
6
font.properties.
<
language
>
_
<
encoding
>
7
font.properties.
<
language
>
_
<
osVersion
>
8
font.properties.
<
language
>
9
font.properties.
<
encoding
>
.
<
osVersion
>
10
font.properties.
<
encoding
>
11
font.properties.
<
osVersion
>
12
font.properties
13
所以我們需要檢查%JAVA_HOME%/jre/lib/fonts目錄下是否存在font.properties.zh文件,如果沒有則新建一個,或者copy font.properties
1
cp font.properties font.properties.zh
三、檢查
很多人介紹的都是copy或引用/usr/share/fonts/zh_CN/TrueType目錄下的中文字體
但是有些suse上不存在/usr/share/fonts這個目錄,所以有時候會叫人感覺很頭疼,但是仔細檢查你會發現路經/usr/lib/X11/font/truetype存在,所以并不一定要/usr/share/fonts/zh_CN/TrueType這個文件夾
用vi打開/usr/lib/X11/font/truetype/fonts.dir文件,
搜索gbk或gb2312(一個人需要而定),將其中的一個拷貝出來此處,我們搜索gb18030,在font.dir中找到
-misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1
按照 java 的字體規則改為 -misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
我們選用字體 -misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1 是因為在 redhat 7.3 和 redhat 8.0 上都能用
打開font.properties.zh,將里面內容替換如下:
1
# @(#)font.properties.zh.Redhat.linux 1.4 02/06/10
2
#
3
# Copyright 2002 Sun Microsystems, Inc. All rights reserved.
4
#
5
6
# Component Font Mappings
7
#
8
serif.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
9
10
serif.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
11
12
serif.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
13
14
serif.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
15
16
sansserif.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
17
18
sansserif.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
19
20
sansserif.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
21
22
sansserif.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
23
24
monospaced.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
25
26
monospaced.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
27
28
monospaced.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
29
30
monospaced.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
31
32
dialog.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
33
34
35
dialog.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
36
37
dialog.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
38
39
dialog.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
40
41
dialoginput.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
42
43
dialoginput.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
44
45
dialoginput.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
46
47
dialoginput.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
48
# Missing Glyph Character
49
#
50
default.char=274f
51
52
# Component Font Character Encodings
53
#
54
fontcharset.serif.0=sun.io.CharToByteISO8859_1
55
fontcharset.serif.1=sun.awt.motif.CharToByteX11GBK
56
57
fontcharset.sansserif.0=sun.io.CharToByteISO8859_1
58
fontcharset.sansserif.1=sun.awt.motif.CharToByteX11GBK
59
60
fontcharset.monospaced.0=sun.io.CharToByteISO8859_1
61
fontcharset.monospaced.1=sun.awt.motif.CharToByteX11GBK
62
63
fontcharset.dialog.0=sun.io.CharToByteISO8859_1
64
fontcharset.dialog.1=sun.awt.motif.CharToByteX11GBK
65
66
fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1
67
fontcharset.dialoginput.1=sun.awt.motif.CharToByteX11GBK
68
69
# Exclusion Ranges
70
#
71
72
# XFontSet Information
73
#
74
fontset.serif.plain=\
75
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
76
77
fontset.serif.italic=\
78
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
79
80
fontset.serif.bold=\
81
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
82
83
fontset.serif.bolditalic=\
84
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
85
86
fontset.sansserif.plain=\
87
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
88
89
fontset.sansserif.italic=\
90
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
91
92
fontset.sansserif.bold=\
93
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
94
95
fontset.sansserif.bolditalic=\
96
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
97
98
fontset.monospaced.plain=\
99
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
100
101
fontset.monospaced.italic=\
102
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
103
104
fontset.monospaced.bold=\
105
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
106
107
fontset.monospaced.bolditalic=\
108
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
109
110
fontset.dialog.italic=\
111
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
112
113
fontset.dialog.bold=\
114
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
115
116
fontset.dialog.bolditalic=\
117
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
118
119
fontset.dialog.plain=\
120
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
121
122
fontset.dialoginput.italic=\
123
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
124
125
fontset.dialoginput.bold=\
126
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
127
128
fontset.dialoginput.bolditalic=\
129
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
130
131
fontset.dialoginput.plain=\
132
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
133
134
#fontset.default=\
135
#-b
&h-lucida-medium-r-normal-sans-
*-%d-*-*-p-*-iso10646-1,\
136
#-tlc-song-medium-r-normal--*-%d-*-*-c-*-gbk-0
137
138
fontset.default=\
139
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
140
141
仔細觀察你可以發現替換的內容基本都是".0"的內容
特別要注意
1
# Missing Glyph Character
2
#
3
default.char=274f
4
5
# Component Font Character Encodings
6
#
7
fontcharset.serif.0=sun.io.CharToByteISO8859_1
8
fontcharset.serif.1=sun.awt.motif.CharToByteX11GBK
9
10
fontcharset.sansserif.0=sun.io.CharToByteISO8859_1
11
fontcharset.sansserif.1=sun.awt.motif.CharToByteX11GBK
12
13
fontcharset.monospaced.0=sun.io.CharToByteISO8859_1
14
fontcharset.monospaced.1=sun.awt.motif.CharToByteX11GBK
15
16
fontcharset.dialog.0=sun.io.CharToByteISO8859_1
17
fontcharset.dialog.1=sun.awt.motif.CharToByteX11GBK
18
19
fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1
20
fontcharset.dialoginput.1=sun.awt.motif.CharToByteX11GBK
21
22
# Exclusion Ranges
23
#
24
25
# XFontSet Information
26
#
27
28
修改后的詞部分內容與原文件內容不一致,注意修改此處
最后值得注意的是在font.properties.zh內容的結尾加上
1
appendedfontpath=/usr/lib/X11/fonts/truetype
這是為了讓jvm去尋找字體文件
你也可以將環境變量export JAVA_FONTS=/usr/lib/X11/fonts/truetype假如系統或你的賬號啟動sh的.profile里
至此中文問題配置完畢
四、其他問題,
如果使用tomcat 設置環境變量:
CATALINA_OPTS="-Djava.awt.headless=true"
export CATALINA_OPTS
(如果你想每次開機自動生效,則可把這兩句寫入系統或者你的賬號啟動sh的.profile里)
到此關于linux顯示jfreechart圖像顯示亂碼的環境配置問題既可以得到解決,其余基本就是代碼的問題,可仔細檢查jfreechat文檔,
jfreechart關注點:
設置Legend的font
x軸坐標名稱的font
y軸坐標名稱的font
posted on 2008-07-01 18:46
acerbic coffee
閱讀(4021)
評論(5)
編輯
收藏
所屬分類:
個人筆記
FeedBack:
#
re: JFreeChart在linux端圖片顯示亂碼問題解決
2008-12-25 10:19 |
劉鑫
其實根本沒有那么麻煩
直接天網ftp搜索下載simsun.ttf
然后在jre/lib/fonts下面新建fallback文件夾,將simsun.ttf放入即可
回復
更多評論
#
re: JFreeChart在linux端圖片顯示亂碼問題解決[未登錄]
2010-09-16 13:57 |
liuyang
樓上正解,感謝!
回復
更多評論
#
re: JFreeChart在linux端圖片顯示亂碼問題解決
2012-06-18 18:43 |
bincrack
絕對正解 @liuyang
回復
更多評論
#
re: JFreeChart在linux端圖片顯示亂碼問題解決
2013-10-16 13:37 |
zzs
是的@劉鑫
回復
更多評論
#
re: JFreeChart在linux端圖片顯示亂碼問題解決
2014-02-28 10:51 |
haer
樓上絕對正解
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
JFreeChart在linux端圖片顯示亂碼問題解決
(轉載)XSLT分頁顯示XML數據并對所有數據重新排序
知道得越多,不知道得也就越多
很久不來了!
jfreeChart Api 簡要介紹
叫人郁悶的chm文件打開
一罐啤酒,一碗泡面,一盒香煙,一個夜晚.......
墨跡!
千金難買!
南京之旅!
Copyright ©2025 acerbic coffee Powered By
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
一区二区亚洲精品精华液
|
一本久久A久久免费精品不卡
|
亚洲五月综合网色九月色
|
一级特黄aa毛片免费观看
|
亚洲A∨无码无在线观看
|
免免费国产AAAAA片
|
新最免费影视大全在线播放
|
亚洲av日韩av不卡在线观看
|
99久久免费精品国产72精品九九
|
一级片在线免费看
|
亚洲冬月枫中文字幕在线看
|
亚洲日本香蕉视频观看视频
|
国产成人青青热久免费精品
|
免费观看一区二区三区
|
99亚偷拍自图区亚洲
|
亚洲乱码精品久久久久..
|
欧美大尺寸SUV免费
|
国产在线精品一区免费香蕉
|
亚洲人成网国产最新在线
|
亚洲精品无码午夜福利中文字幕
|
四虎影视永久免费观看
|
2021在线观看视频精品免费
|
美女的胸又黄又www网站免费
|
666精品国产精品亚洲
|
亚洲欧洲日本在线
|
真实乱视频国产免费观看
|
91精品国产免费
|
中文字幕不卡免费高清视频
|
亚洲精品天堂无码中文字幕
|
久久亚洲精品人成综合网
|
亚洲无码精品浪潮
|
国产裸模视频免费区无码
|
久久久久久曰本AV免费免费
|
成人性生交大片免费看中文
|
特级aa**毛片免费观看
|
亚洲人成人77777在线播放
|
亚洲av日韩av无码黑人
|
伊人久久大香线蕉亚洲
|
免费在线一级毛片
|
国产高清在线免费
|
99久久免费国产精品特黄
|