博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

Forward Everyday

如果有一天累了,我就回去养鸡养鸭
hantsy.cublog.cn
Fedora 9 使用手记(2)--安装java开发环境
  最后更新:2008年6月28日
  在Linux 下安装JDK 一文中已经简单的介绍了linux 的 java 知识和 JDK 的安装。这里再就我的使用情况下,针对 Fedora 9 上的Java 的使用经验作进一步的说明。

安装Sun JDK

  千呼万唤始出来,从Sun宣布 Java开源开始,经过长达两年时间整理,现在终于宣布 Java 已经彻底开源,但有很小的一部分代码可能由于专利可能要重写。
  Fedora 9 自带的 OpenJDK 并不是完全来自OpenJDK项目 。它来自Redhat 的开源项目 IcedTea 项目的成果  ,它是OpenJDK 和 GNU Classpath的混合物。
  实际使用中我并不打算使用它,我还是愿意使用Sun官方的JDK。
  从Sun Java 官方网站 下载最新的JDK 6 ,我使用的是最新的JDK 6 update 10 beta,它提供了很多新特性 ,这将是第一个提供 Consumer JRE 的版本。
  注意请下载 rpm版本,文件名为jdk-6u10-beta-linux-i586-rpm.bin。
  切换到root用户,或者用sudo取得root 超级用户权限。
  首先保证文件可以执行,添加执行权限。

[hantsy@localhost Download]$chmod a+rx jdk-6u10-beta-linux-i586-rpm.bin


  开始安装。

[hantsy@localhost Download]$sudo ./jdk-6u10-beta-linux-i586-rpm.bin


  按space 键阅读协议,到最后一页。输入yes,同意协议,开始安装。
  文件会默认安装在/usr/java 目录下面,这是安装文件自动创建的目录。

[hantsy@localhost java]$ ls -al
total 1
drwxr-xr-x  3 root root 128 2008-06-13 10:14 .
drwxr-xr-x 14 root root 360 2008-05-29 18:17 ..
lrwxrwxrwx  1 root root  16 2008-06-13 10:14 default -> /usr/java/latest
drwxr-xr-x  9 root root 504 2008-06-13 10:14 jdk1.6.0_10
lrwxrwxrwx  1 root root  21 2008-06-13 10:14 latest -> /usr/java/jdk1.6.0_10


  从 JPackage 网站下载java-1.6.0-sun-compat 包,这是一个虚包,提供一些虚拟包,和一些链接指向安装的jdk目录,主要可以为系统包管理系统解决java程序依赖问题。
  假设你已经准备好了打包环境 ,就可以重新为最新的JDK打一个包。
  安装源文件rpm。

[hantsy@localhost ~]$rpm -ivh java-1.6.0-sun-compat-1.6.0.06-1jpp.src.rpm


  注意,这里是使用当前普通用户安装。
  进入SPECS文件目录。

[hantsy@localhost ~]$ cd rpmbuild/SPECS/


    编辑java-1.6.0-sun-compat.spec,将buildver定义改成10,upstreamrel改成beta。

[hantsy@localhost ~]$ gedit java-1.6.0-sun-compat.spec


%define buildver        10
%define upstreamrel     beta


  重新打包。

[hantsy@localhost ~]$sudo rpmbuild -ba java-1.6.0-sun-compat.spec


  打包结束后,rpm包会放在 ~/rpmbuild/RPMS下面。
  转到~/rpmbuild/RPMS/i586 进入安装。

[hantsy@localhost ~]$sudo rpm -Uvh java-1.6.0-sun-compat-1.6.0.10-1.fc9.i586.rpm


  测试是否已经使用新安装的Sun JDK ,打开terminal 输入java -version 进行检测。

[hantsy@localhost ~]$java -version


  应该看到的显示结果为:

[hantsy@localhost ~]$ java -version
java version "1.6.0_10-beta"
Java(TM) SE Runtime Environment (build 1.6.0_10-beta-b25)
Java HotSpot(TM) Client VM (build 11.0-b12, mixed mode, sharing)


  如果不是期望的jdk版本,可能是系统中还有其他java环境。
  默认情况下,Fedora 9安装源包含了openjdk 和gcj,你有两种选择解决这个问题。
  1)你可以删除其它java环境,

[hantsy@localhost ~]$ sudo yum remove  java-1.6.0-openjdk java-1.5.0-gcj


  或者2)切换到所想要的Sun JDK。

[hantsy@localhost ~]$ sudo /usr/sbin/update-alternatives  --config java


  这时你应该看到可以一种以上可选条目,选择你新安装的java 环境。
  再次使用java -version命令行进行测试。

  设置JAVA_HOME 环境变量,虽然大部分情况是没有必要的,多数程序都能够根据系统PATH中的 java 自动查找到相应的java安装位置,但少数java程序仍然需要指定JAVA_HOME。
  为了方便,我写了一个shell文件,让它在系统启动时自动执行。
  在/etc/profile.d/下创建一个名为java.sh的文件,内容如下。

export JAVA_HOME=/usr/java/default
export ANT_HOME=/opt/build/ant
export M2_HOME=/opt/build/maven
export PATH=$PATH:$ANT_HOME/bin:$M2_HOME/bin


  保证文件可以执行,必要添加执行权限。

[hantsy@localhost ~]$ sudo chmod a+x /etc/profile.d/java.sh


  你可以已经注意到,文件包含几行其他几行与JDK不相干的内容。这里也同时设置了Apache ant , Apache maven 两个最常用的 java 构建工具的环境变量(我的日常使用中离不开它们),并将其命令行工具路径添加到系统的 PATH 中。
  从terminal 命令行执行 

[hantsy@localhost ~]$ sudo sh /etc/profile.d/java.sh


  使其立即生效。
  用命令行echo $JAVA_HOME 进行测试。
  应该会得到类似这样的结果。

[hantsy@localhost ~]$ echo $JAVA_HOME
/usr/java/default



安装 Eclipse 开发环境

    
  Fedora 9 系统已经自带了基本的 Eclipse IDE开发环境,但如果要进行企业应用开发,其提供的功能远远不够。你可以通过插件方式更新,安装其它所需要的模块。也可以选择从Eclipse 官方网站 下载一个比较完整的开发包。
  针对不同需求,eclipse官方提供了几种选择。
  一般情况,我会下载JEE的版本 Eclipse IDE for Java EE Developers ,其它功能以后可以通过在线更新的方式安装。
  需要说明的是,我的这里的 eclipse 是 3.3系列的最新稳定版本。eclipse 给我的印象和Windows 系统差不多,新出来的版本总是bug多多,用上一个次版本的稳定版本比最新版本(3.4)要稳定得多。
  解压到用户目录下(我在个人目录下创建了一个devtools,开发工具都放在~/devtools下面),得到一个eclipse目录。
  其他可选的第三方插件,就我使用来看这几个工具是日常必备的:

Maven Integration for Eclipse(http://m2eclipse.sonatype.org/update)
Spring IDE Update Site(http://springide.org/updatesite)
JBossTools Development Update Site(http://download.jboss.org/updates/development)
Subclipse update site(http://subclipse.tigris.org/update_1.2.x)

  PHP的开发,可以安装PDT,它主要来自带Zend的贡献,注意,zend官方 提供的安装源中包括了zend debugger。
PDT project(http://downloads.zend.com/pdt)

  为了方面 Eclipse 维护,建议将插件和 Eclipse IDE 分开存放。
  在~/devtools另建一个目录,命名为eclipse-updates,我将第三插件全部放入此目录中。
  在 Eclipse IDE 的安装目录(~/devtools/eclipse)中创建一个名为 links 目录。

  下面以安装Maven Integration for Eclipse 来说明,你可以这样处理。
  在 Eclipse IDE 下的 links  目录中创建一个m2eclipse.link 文本文件。
  内容如下:

path=/home/hantsy/devtools/eclipse-updates/m2eclipse


  Maven Integration for Eclipse 插件安装到~/devtools/eclipse-updates/m2eclipse 中,这个过程可以是通过 Eclipse 更新完成或者是手动安装的。

  ~/devtools/eclipse-updates/m2eclipse 中的目录结构如下。

eclipse
    features
    plugins
    .eclipseextension

  features, plugins 和.eclipseextension 处于 eclipse 目录中,eclipse 是 m2eclipse 中的目录。
  其中隐藏文件 .eclipseextension 记录的是 Eclipse 平台的版本信息,内容如下。

id=org.eclipse.platform
name=Eclipse Platform
version=3.3.0


  Eclipse 插件处理起来比较烦,更新工具不能自动处理依赖,更新插件不能自动删除旧的版本。在通过 Eclipse 的更新工具安装插件时,在你添加新的插件,一定要耐心添加它依赖的特性包。
  对于手动安装的方式,安装完一个插件后,可以用 eclipse -clean 的方式启动 Eclipse,并打开Software Updates->Manage Configuration检查检查是否存在依赖没有解决。
  还好,这个被 Eclipse 用户骂了n年的垃圾工具在 Eclipse 3.4中会被全新的插件管理工具代替。

  不得不发点牢骚的是,Linux的下 Eclipse 表现比 Windows 差很远,可以明确的说 Windows 外的其它平台的支持只是 Eclipse 社区的形象工程
  1.使用 Eclipse 过程可能遇到第一个问题,就是莫名其妙的死掉。
  Eclipse 3.3是内存消耗大户,你必須给它足够多的内存,我想应该在1G以上,才能避免使用过程中弹出OutOfMemery而Down掉。
  这里有描述和解决方法,http://eclipsenuggets.blogspot.com/2007/10/does-your-eclipse-3.html

  2.Eclipse 外观与GTK原生程序格格不入,很明显的按钮栏,标签栏,树目录,下面的状态栏都胖了很多。特别是习惯Windows XP 风格的用户,根本就不能忍受 Linux 上丑陋的 Eclipse 界面。
  这个网络有不少的描述,

Making Eclipse look good on Linux

Making Eclipse look good on Linux (revisited)


  综合这几个帖子的内容,我对 Eclipse 作了如下处理,同时解决第一个问题。
  在个人目录建一个隐藏目录,.eclipse。
  新建一个gtkrc-2.0(Eclispe 启动我打算用它替代系统的 GTK 配置),内容如下。

style "gtkcompact" {
font_name="Sans 9"
GtkButton::default_border={0,0,0,0}
GtkButton::default_outside_border={0,0,0,0}
GtkButtonBox::child_min_width=0
GtkButtonBox::child_min_heigth=0
GtkButtonBox::child_internal_pad_x=0
GtkButtonBox::child_internal_pad_y=0
GtkMenu::vertical-padding=1
GtkMenuBar::internal_padding=0
GtkMenuItem::horizontal_padding=4
GtkToolbar::internal-padding=0
GtkToolbar::space-size=0
GtkOptionMenu::indicator_size=0
GtkOptionMenu::indicator_spacing=0
GtkPaned::handle_size=4
GtkRange::trough_border=0
GtkRange::stepper_spacing=0
GtkScale::value_spacing=0
GtkScrolledWindow::scrollbar_spacing=0
GtkExpander::expander_size=10
GtkExpander::expander_spacing=0
GtkTreeView::vertical-separator=0
GtkTreeView::horizontal-separator=0
GtkTreeView::expander-size=8
GtkTreeView::fixed-height-mode=TRUE
GtkWidget::focus_padding=0
}
class "GtkWidget" style "gtkcompact"

style "gtkcompactextra" {
xthickness=0
ythickness=0
}
#class "GtkButton" style "gtkcompactextra"
class "GtkToolbar" style "gtkcompactextra"
class "GtkPaned" style "gtkcompactextra"


  回到Eclipse IDE 安装目录(~/devtools/eclipse),将执行文件 eclipse (~/devtools/eclipse/eclipse) 重新命名为 eclipse.bin。
  然后,新建一个名为 eclipse 的 shell 文件。

#!/bin/sh
 
LAUNCHER_DIR=`dirname $0`
ECLIPSE_HOME=`readlink -f $LAUNCHER_DIR`
ECLIPSE_USERDIR=$HOME/.eclipse
 
# Setup Java environment if not already available
#export JAVA_HOME=/opt/jdk5
if [ -z $JAVA_HOME ]; then
    export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun-1.5.0.06
    export PATH=$JAVA_HOME/bin:$PATH
fi
 
# Sun JDK Options
JAVA_OPTS="-Xms512m -Xmx1024m -Dsun.rmi.dgc.client.gcInterval=3600000 \
 -Dsun.rmi.dgc.server.gcInterval=3600000 -XX:+UseConcMarkSweepGC \
-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled \
-XX:MaxPermSize=256m -Dosgi.requiredJavaVersion=1.5"
# -Dosgi.bundlefile.limit=1000"
 
# Add the following flag to vmargs to enable jmx remote management (Sun JVM)
#JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"
 
# Link to correct mozilla libraries
if [ -z $MOZILLA_FIVE_HOME ]; then
    export MOZILLA_FIVE_HOME=`ls -1rd /usr/lib/*firefox*/chrome 2>/dev/null | head -1 | xargs dirname 2>/dev/null`
fi
 
# Load JNI libraries (native library interface)
# export LD_LIBRARY_PATH=/usr/lib/jni
 
if [ -e $ECLIPSE_USERDIR/gtkrc-2.0 ]; then
    export GTK2_RC_FILES=$ECLIPSE_USERDIR/gtkrc-2.0
fi
 
$ECLIPSE_HOME/eclipse.bin \
    -showsplash org.eclipse.platform \
    --launcher.XXMaxPermSize 512M \
    -user $ECLIPSE_USERDIR \
    -data $ECLIPSE_USERDIR/workspace \
    -showLocation \
    -clean \
    $@ \
    -vmargs $JAVA_OPTS
exit 0


  你可以根据自己的需要对它进行调整,不要忘记,给它添加执行权限。

[hantsy@localhost eclipse]$ chmod a+x eclipse


  启动eclipse,看看效果如何。
  
  左上角是原始的eclipse,右下角是经过调整过的效果。

  3.在这几天的 eclipse 使用中,我遭遇到了第三个问题。Eclipse 异常退出,Gnome bug report 会启动报错。
  保存了report 文件,看到其中包含一句话:/usr/libexec/Eclipse: No such file or directory,莫名其妙。
  用google 搜索一下之后,发现 gentoo 中已经它定义为一个bug,原因是eclipse 与 gtk 2.12.8 以上版本不兼容。

  目前 Fedora 9 中的 GTK 版本是2.12.10,不知道是不是也存在这个问题。基于这个原因,我机器上的Eclipse基本上成了摆设。
  另外,网络上有人说 Fedora 9 自带的 Eclipse 不会这种现象(它是根据系统环境编译的)。我没有去尝试,也想再花时间去尝试那么多。

  我想现在 eclipse swt 标榜的 native look and feel 现在是没有底气了,特别是在 Sun swing 完美支持 GTK 之后。

  2008年6月29日补充

  我下载了eclipse 3.4 ,发现上面问题3在一天之内没有出现。或许这个问题已经在 3.4 中得已解决。
  如果你想在Fedora 9上使用eclipse ,请优先使用系统自带的eclipse 3.3,或许下载最新的eclipse 3.4。


安装 NetBeans IDE


  相对来说,NetBeans 的安装就简单的得多,如果你习惯一步一步的向导式的安装可以下载平台相关的版本。
  根据不同的需求,NetBeans 官方网站 提供几种不同的包供用户选择,最新的稳定版本 NetBeans 6.1 提供了好几下载方式。
  作为Java企业开发,可以选择 Web & java EE 的版本,或者全功能的 All 版本。

[hantsy@localhost eclipse]$ chmod a+x netbeans-6.1-javaee-linux.sh
[hantsy@localhost eclipse]$ ./netbeans-6.1-javaee-linux.sh


  我下载的是Web & Java EE 版本,给下载文件添加执行权限,启动执行文件即可。
  剩下的任务,就是我们所熟悉的一步步的Next了。
  NetBeans 安装程序会在桌面和菜单创建NetBeans 启动选项。

  NetBeans 是纯Swing 程序,在NetBeans 下载页面也提供了与平台无关的压缩版本,直接解压即可,可以在所有平台上使用。

  unzip netbeans-xxx.zip

  你可以在桌面创建一个launcher ,指定到刚刚解压的 netbeans 目录下bin/netbeans。

  如果系统安装的JDK是的1.6的,NetBeans 默认使用是的GTK界面。
  不过,我已经习惯了Metal的Swing 界面。
   打开 <netbeans 安装>/etc/netbeans.conf ,在netbeans_default_options 一行最后添加 --laf javax.swing.plaf.metal.MetalLookAndFeel,结果看起来和下面差不多。

netbeans_default_options="-J-Dorg.netbeans.modules.tomcat.autoregister.token=1209975174337 -J-Dorg.netbeans.modules.tomcat.autoregister.catalinaHome=\"/opt/server/apache/apache-tomcat-6.0.16\" -J-Dcom.sun.aas.installRoot=\"/opt/server/sun/glassfish-v2ur2\" -J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Xverify:none -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true --laf javax.swing.plaf.metal.MetalLookAndFeel"


  你也调节其它启动参数,比较分配更多内存,指定字体大小等,参考以下文章。

其它说明

  Swing 中文显示,可以参考以下文章。

  注意,在使用 Eclipse SWT 程序时的时候,关闭 Compiz 特效,否则程序几乎会处于瘫痪。Swing程序不受影响。

  安装 Zend Studio 5.5 后,我试图将其中Java 环境替换成 java 6 ,结果界面一片空白,鼠标移到的地方才会显示出来。最好还是使用它自带 jre5来启动它,但有一个问题,打开某些窗口时,有时会出现空白,比如新建项目。
  在<zend studio安装目录>/bin/ZDE的开头加上,export AWT_TOOLKIT=MToolkit 迫使awt使用motif界面。同时不要忘记你的系统应该要安装一些老的系统兼容包,libXp,lesstif等等。
  这样会带来一个新的问题,使用过程中,键盘有时会失效。还是希望新的zend studio for eclipse 功能能够更加强大些。

 TAG Linux java
发表于: 2008-06-23,修改于: 2008-06-29 18:02,已浏览1531次,有评论0条 推荐 投诉

给我留言
版权所有 ChinaUnix.net 页面生成时间:0.01639