Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1156951
  • 博文数量: 309
  • 博客积分: 6093
  • 博客等级: 准将
  • 技术积分: 3038
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-03 17:14
个人简介

linux学习记录

文章分类

全部博文(309)

文章存档

2014年(2)

2012年(37)

2011年(41)

2010年(87)

2009年(54)

2008年(88)

分类:

2009-04-23 10:32:39

Linux下jdk1.5的安装及中文显示问题解决方案

这篇文章最早发布于linuxsir和javaresearch,是我2004年大三的时候自学Java,在Linux下安装J2SE 5.0时发现问题,解决问题整理后写的文章。

Java Research URL


文章写于2004年10月,用的发行版Fedora Core 2,JDK 1.5.0。最新版本发布在Google Docs上


后来发现被国内无数的网站和博客转载(大多数人至少写了转,也有不少连转载都不写的,但同样都未经本人的同意),但也无可非议,国内的版权意识那时候绝对 达不到国外,甚至如今中国的水平。我也没有多说什么,只是要求转载的人把我的email地址从文章中移除,以避免更多的垃圾邮件。毕竟那是我的主力 email,可惜基本没人那么做。Junk mail还是那么多,Google和Baidu还是可以搜到这个email,无语。

上月发现Ubuntu下JDK 1.6.0下有类似的问题,无聊的时候运行了一下几年前写的Java Swing程序,估计是类似的问题,还没有时间着手去解决。OS X下无此问题


Ubuntu
Ubuntu上的安装
Ubuntu用的是 Debian的APT管理,优点就不谈了。如果使用Debian或者Ubuntu,建议在APT来安装和管理JDK,这样的话省去自己手动更新JDK的痛 苦,解决browser plugin问题。在系统中也会自动添加Sun Java Console/Java Web Start/Java Plugin Control Panel/Policy Tools之类的菜单。手动更新需要去下那个self-extract的bin文件然后自己设置环境变量,每次升级JDK之后还需要重新修改,比较麻烦。 既然用了Debian/Ubuntu,就让APT替你管理好系统吧。

Ubuntu Desktop和Server默认是不装Sun JRE/JDK相关包的,因为是非完全开源的:

JDK安装是非常简单的:
sudo apt-get install sun-java6-jdk sun-java6-fonts sun-java6-plugin
有依赖关系的会自动解决。安装好之后可以用
sudo update-alternatives --config java
选择想用的JDK。

如果需要通过.deb包安装的apps用你指定的JRE/JDK来跑,需要编辑/etc/jvm文件。
把路径加入,放在最上方,这里以Ubuntu Intrepid Ibex 8.10为例:
/usr/lib/jvm/java-6-sun-1.6.0.10
当然原来编辑~/.bash_profile ~/.bashrc和/etc/profile的方法一样适用,看你喜欢哪一种方法了。

注意环境变量的作用域:
Session Wide (不影响GUI程序)
~/.profiel
~/.bash_profile
~/.bashrc

System Wide
/etc/profile
/etc/bash.bashrc
/etc/environment


更多信息:



稍后会重新写一篇更详细的,涵盖更多发行版本和JDK版本的文档。敬请关注。

Linuxjdk1.5的安装及中文显示问题解决方案

作者Terry Wang

个人主页

电子邮件imterry[AT]gmail.com
文档版本v1.3 修改于2008-11-1

初始版本v1.0 2004-10-30

操作系统Fedora Core 2

jdk版本jdk 1.5.0

摘要:随着Sun发布J2SE 5.0,即jdk1.5,众多新特性的加入和JVM性能的改善让人心动。Windows下安装和环境设置以及中文显示自然没什么好说的,简直可以说是傻瓜式的。但是Linux下就不会那么顺利了,尤其是中文字体的显示一直以来总是困扰着初级用户。Jdk 1.5.0的中文显示设置和j2sdk 1.4.x时相比已经有了很大的改变。本文着重介绍jdk1.5Linux操作系统下的安装、环境变量设置和中文显示问题的解决。

  1. 首先,从sun下载jdk1.5的安装文件,选择正确的Platform和language,一般有Linux x86,支持64-bit
    下载地址

Linux RPM in self-extracting file (jdk-1_5_0-linux-i586-rpm.bin)

Linux self-extracting file (jdk-1_5_0-linux-i586.bin)

简单说一下两个安装文件的区别,Linux RPM in self-extracting file是一个把rpm安装包封装在压缩包内的二进制格式,在linux操作系统的命令行下,给文件加上执行的权限chmod a+x jdk-1_5_0-linux-i586-rpm.bin,然后./jdk-1_5_0-linux-i586-rpm.bin之后可以得到jdk-1_5_0-linux-i586.rpm这个rpm包,之后安装rpm包还用多说么?rpm –ivh package-name。前者的好处是容易安装和维护,傻瓜式的。而后者则适合高级的用户,相当于一个zip版本的“绿色”jdk,没有安装程序,安装完之后可能需要做一些链接(具体可以参考jdk安装指南文档)。同样地给后者加上执行权限之后直接执行二进制文件即可得到jdk 1.5.0,一般用户的习惯都是将jdk放在/usr/java下,rpm安装后默认是在/usr/java下。
Installation notes:

  1. 安装好之后要做的便是环境变量的设置,也可分为三种不同的情况。
    第一种是对于单个用户的的环境变量设置。需要修改用户所对应的.bash_profile文件,同时也可以修改.bashrc,这样每次新开terminal都会生效。我们可以通过vi ~/.bash_profile来编辑当前用户的bash_profile文件,当然你也可以用你自己喜欢的编辑器。在开头或者适当的地方插入一下代码:
    export JAVA_HOME=/usr/java/jdk1.5.0
    export CLASSPATH=.
    export PATH=$JAVA_HOME/bin:$PATH
    然后保存文件,注销重新登陆之后在控制台下输入java –version,如果出现一下信息则说明安装设置已经成功。
    注意:此代码是为了看起来简单,所以没有加上复杂的变量引用,熟悉shell的用户可以参 照第二种方法的代码进行修改。
    java version "1.5.0"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
    Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)

    第二种是设置Linux的全局环境变量(需要root权限),修改/etc/profile,在适当的地方加入以下代码:
    JAVA_HOME=/usr/java/jdk1.5.0
    PATH=$JAVA_HOME/bin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
    export PATH JAVA_HOME CLASSPATH
    修改完成后保存,注销当前用户重新登陆后按照第一种同样的方法进行测试查看是否成功。
    如果不想注销,可以直接运行 source /etc/profile 来让设置生效。

    第三种是要使JDK在所有的用户中使用,可以这样:
    Vi /etc/profile.d/java.sh
    在新的java.sh中输入以下内容:
    #Set JDK for all users
    JAVA_HOME=/usr/java/jdk1.5.0
    CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
    PATH=$JAVA_HOME/bin:$PATH
    export PATH JAVA_HOME CLASSPATH

    保存推出,然后给java.sh分配权限:chmod 755 /etc/profile.d/java.sh (755 -rwxr-xr-x)
    至此,基本的安装和环境变量设置已经完成了。

    至于正确显示applet的浏览器的插件安装请查看Sun的文档:


    接下来要说如何修改配置来正确显示中文字体。

  2. 最后来解决一下中文字体的显示问题。Jdk1.5.0的字体配置和1.4.x的时候相比有了很大的差别。先来看一下不作任何修改的情况下ControlPanel中文字体的显示情况,如图:

    虽然能显示一下中文,但是有一大半是无法正常显示的方块,很不爽。下面我们就来解决这个问题。
    先来看一下Sun公司对JRE1.5.0版的中文字体设置的官方说明中的一些资料:
    介绍一下其字体配置文件的加载方案。其加载顺序为(JavaHomeJRE的根目录,下同):JavaHome/lib/fontconfig.OS.Version.properties
    JavaHome/lib/fontconfig.OS.Version.bfc
    JavaHome/lib/fontconfig.OS.properties
    JavaHome/lib/fontconfig.OS.bfc
    JavaHome/lib/fontconfig.Version.properties
    JavaHome/lib/fontconfig.Version.bfc
    JavaHome/lib/fontconfig.properties
    JavaHome/lib/fontconfig.bfc
    其中,OS字段可以是:
    Windows
    "98", "2000", "Me", "XP", "2003"
    Solaris
    :空。
    Linux
    "Sun", "RedHat", "Turbo", "SuSE"
    Version字段指该OS的版本号。
    在这些配置文件中,仅.properties文件是文本文件。其格式跟JRE1.4.2版的不同。文件分为几段,并在每段开始时标明。
    我们需要关注的仅有两段:Component Font MappingsSearch Sequences。前者指定字体,后者指定要使用的properties的搜索顺序。
    知道了这些,配置起来就简单了。
    看了是不是有点晕,而且觉得没用?不要急下面会用到的。
    先把字体文件Simsun.ttf(可以从windows下拷贝一份到Linux下)拷贝到JRE的字体目录$JAVA_HOME/jre/lib/fonts下,接着编辑字体目录下的文件fonts.dir,把第一行的数字加1,然后在最后加一行加上:
    simsun.ttf -SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
    然后保存文件。
    最后把字体配置文件改名为fontconfig.RedHat.properties这种形式(Fedora Core x也是Redhat的衍生物),把$JAVA_HOME/jre/lib下多余的fontconfig开头的文件全部移到新建的bak目录下,当然你不备份也可以只是除了问题不要找我^_^
    注意:如果你的Linux不是RedhatFedora Core系列,请按照自己的发行版本对字体配置文件做相应的修改,参照Sun公司的资料,jdsSuseTurbo应该没问题了,至于DebianMandrake我就不得而知了,如果大家按照自己的方式修改成功了请告诉我详细情况以便于我完善这个文档。
    然后再在控制台下执行ControlPanel看看,是不是很爽!如图:

    还有自己的程序也能完美的显示中文字体了!

  3. 参考文献
    Troubleshooting Java 2 SE 5.0 (强烈推荐)

    Sun
    公司对JRE1.5.0版的中文字体设置的官方说明:

阅读(1377) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-12-26 21:59:37

这个字体很丑啊,我想用 文泉驿等宽正黑 ,但总是会显示为 文泉驿正黑。