<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    acerbic coffee
    走自己的路,讓別人跑步
    posts - 26,comments - 14,trackbacks - 0

            最近項目遇到linux上顯示JFreeChart圖形,在網上搜索到了很多關于此方面的信息,詳細的也有,不過大多環境都是redhat+jdk1.4但乍一看說得不太清楚,搞了半天終于搞定了,現解釋,
            環境:suse10,jdk1.4.2
            相同部分就不再多說,以下部分內容,挑csdn上一個詳細的文章粘貼出來,順便總結一下

    一、  錯誤描述

    基本上的錯誤都是以下錯誤

     1java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
     2at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
     3at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:125)
     4at java.lang.Class.forName0(Native Method)
     5at java.lang.Class.forName(Class.java:140)
     6at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:62)
     7at java.awt.Font.initializeFont(Font.java:309)
     8at java.awt.Font.<init>(Font.java:345)
     9at org.jfree.chart.plot.PiePlot.<clinit>(PiePlot.java:186)
    10at org.jfree.chart.ChartFactory.createPieChart3D(ChartFactory.java:416)

    錯誤原因么,大概就是jvm找不到字體文件

    二、問題解決:

    寫一個測試系統環境的小程序

     

    1public 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按照以下順序搜索字體屬性文件:

     

     1font.properties.<language>_<region>_<encoding>.<osVersion>
     2font.properties.<language>_<region>_<encoding>
     3font.properties.<language>_<region>.<osVersion>
     4font.properties.<language>_<region>
     5font.properties.<language>_<encoding>.<osVersion>
     6font.properties.<language>_<encoding>
     7font.properties.<language>_<osVersion>
     8font.properties.<language>
     9font.properties.<encoding>.<osVersion>
    10font.properties.<encoding>
    11font.properties.<osVersion>
    12font.properties
    13

    所以我們需要檢查%JAVA_HOME%/jre/lib/fonts目錄下是否存在font.properties.zh文件,如果沒有則新建一個,或者copy font.properties

    1cp 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#
      8serif.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
      9
     10serif.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     11
     12serif.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     13
     14serif.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     15
     16sansserif.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     17
     18sansserif.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     19
     20sansserif.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     21
     22sansserif.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     23
     24monospaced.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     25
     26monospaced.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     27
     28monospaced.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     29
     30monospaced.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     31
     32dialog.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     33
     34
     35dialog.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     36
     37dialog.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     38
     39dialog.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     40
     41dialoginput.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     42
     43dialoginput.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     44
     45dialoginput.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     46
     47dialoginput.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     48# Missing Glyph Character
     49#
     50default.char=274f
     51
     52# Component Font Character Encodings
     53#
     54fontcharset.serif.0=sun.io.CharToByteISO8859_1
     55fontcharset.serif.1=sun.awt.motif.CharToByteX11GBK
     56
     57fontcharset.sansserif.0=sun.io.CharToByteISO8859_1
     58fontcharset.sansserif.1=sun.awt.motif.CharToByteX11GBK
     59
     60fontcharset.monospaced.0=sun.io.CharToByteISO8859_1
     61fontcharset.monospaced.1=sun.awt.motif.CharToByteX11GBK
     62
     63fontcharset.dialog.0=sun.io.CharToByteISO8859_1
     64fontcharset.dialog.1=sun.awt.motif.CharToByteX11GBK
     65
     66fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1
     67fontcharset.dialoginput.1=sun.awt.motif.CharToByteX11GBK
     68
     69# Exclusion Ranges
     70#
     71
     72# XFontSet Information
     73#
     74fontset.serif.plain=\
     75-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     76
     77fontset.serif.italic=\
     78-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     79
     80fontset.serif.bold=\
     81-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     82
     83fontset.serif.bolditalic=\
     84-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     85
     86fontset.sansserif.plain=\
     87-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     88
     89fontset.sansserif.italic=\
     90-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     91
     92fontset.sansserif.bold=\
     93-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     94
     95fontset.sansserif.bolditalic=\
     96-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
     97
     98fontset.monospaced.plain=\
     99-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
    100
    101fontset.monospaced.italic=\
    102-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
    103
    104fontset.monospaced.bold=\
    105-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
    106
    107fontset.monospaced.bolditalic=\
    108-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
    109
    110fontset.dialog.italic=\
    111-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
    112
    113fontset.dialog.bold=\
    114-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
    115
    116fontset.dialog.bolditalic=\
    117-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
    118
    119fontset.dialog.plain=\
    120-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
    121
    122fontset.dialoginput.italic=\
    123-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
    124
    125fontset.dialoginput.bold=\
    126-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
    127
    128fontset.dialoginput.bolditalic=\
    129-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
    130
    131fontset.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
    138fontset.default=\
    139-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
    140
    141


    仔細觀察你可以發現替換的內容基本都是".0"的內容

    特別要注意

     1# Missing Glyph Character
     2#
     3default.char=274f
     4
     5# Component Font Character Encodings
     6#
     7fontcharset.serif.0=sun.io.CharToByteISO8859_1
     8fontcharset.serif.1=sun.awt.motif.CharToByteX11GBK
     9
    10fontcharset.sansserif.0=sun.io.CharToByteISO8859_1
    11fontcharset.sansserif.1=sun.awt.motif.CharToByteX11GBK
    12
    13fontcharset.monospaced.0=sun.io.CharToByteISO8859_1
    14fontcharset.monospaced.1=sun.awt.motif.CharToByteX11GBK
    15
    16fontcharset.dialog.0=sun.io.CharToByteISO8859_1
    17fontcharset.dialog.1=sun.awt.motif.CharToByteX11GBK
    18
    19fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1
    20fontcharset.dialoginput.1=sun.awt.motif.CharToByteX11GBK
    21
    22# Exclusion Ranges
    23#
    24
    25# XFontSet Information
    26#
    27
    28

    修改后的詞部分內容與原文件內容不一致,注意修改此處

    最后值得注意的是在font.properties.zh內容的結尾加上

    1appendedfontpath=/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
    樓上絕對正解  回復  更多評論
      
    主站蜘蛛池模板: 一区二区亚洲精品精华液| 一本久久A久久免费精品不卡 | 亚洲五月综合网色九月色| 一级特黄aa毛片免费观看| 亚洲A∨无码无在线观看| 免免费国产AAAAA片| 新最免费影视大全在线播放| 亚洲av日韩av不卡在线观看| 99久久免费精品国产72精品九九| 一级片在线免费看| 亚洲冬月枫中文字幕在线看 | 亚洲日本香蕉视频观看视频| 国产成人青青热久免费精品| 免费观看一区二区三区| 99亚偷拍自图区亚洲| 亚洲乱码精品久久久久..| 欧美大尺寸SUV免费| 国产在线精品一区免费香蕉| 亚洲人成网国产最新在线| 亚洲精品无码午夜福利中文字幕 | 四虎影视永久免费观看| 2021在线观看视频精品免费| 美女的胸又黄又www网站免费| 666精品国产精品亚洲| 亚洲欧洲日本在线| 真实乱视频国产免费观看| 91精品国产免费| 中文字幕不卡免费高清视频| 亚洲精品天堂无码中文字幕| 久久亚洲精品人成综合网| 亚洲无码精品浪潮| 国产裸模视频免费区无码| 久久久久久曰本AV免费免费| 成人性生交大片免费看中文| 特级aa**毛片免费观看| 亚洲人成人77777在线播放| 亚洲av日韩av无码黑人| 伊人久久大香线蕉亚洲| 免费在线一级毛片| 国产高清在线免费| 99久久免费国产精品特黄|