第 5 章 Java

目录

5.1. 开发环境配置
5.1.1. jdk
5.1.2. Maven

5.1. 开发环境配置

常用的软件包括 jdk,maven。

5.1.1. jdk

首先要安装的自然是 jdk,你可以选择 openjdk 或者是 Sun 官方的 SDK,或者两个都装,用 alternatives 命令来随时切换,它的实现原理是管理一组从 /usr/bin/etc/alternatives 的软链接。

几乎所有的 Linux 发行版的官方源都会提供 Openjdk,所以安装很简单,换成 root 用户:

# yum install java-1.6.0-openjdk java-1.6.0-openjdk-devel

Sun SDK 的安装需要先去 Oracle 官网下载,我这里直接下载 rpm 包:

# wget http://download.oracle.com/otn-pub/java/jdk/6u27-b07/jdk-6u27-linux-i586-rpm.bin
# mv jdk-6u27-linux-i586-rpm.bin* jdk-6u27-linux-i586-rpm.bin
# sh jdk-6u27-linux-i586-rpm.bin

先把默认的与 java 有关的 alternatives全部删掉。

# ls -l /etc/alternatives
# alternatives --remove java_sdk_1.6.0 /usr/lib/jvm/java-1.6.0-openjdk
# alternatives --remove java_sdk_1.6.0_exports /usr/lib/jvm-exports/java-1.6.0-openjdk
# alternatives --remove java_sdk_openjdk /usr/lib/jvm/java-1.6.0-openjdk
# alternatives --remove java_sdk_openjdk_exports /usr/lib/jvm-exports/java-1.6.0-openjdk
# alternatives --remove jre_1.6.0 /usr/lib/jvm/jre-1.6.0-openjdk
# alternatives --remove jre_1.6.0_exports /usr/lib/jvm-exports/jre-1.6.0-openjdk
# alternatives --remove jre_openjdk /usr/lib/jvm/jre-1.6.0-openjdk
# alternatives --remove jre_openjdk_exports /usr/lib/jvm-exports/jre-1.6.0-openjdk

把原来默认安装的一个老版本的 gcj给删掉。

# yum erase java-1.5.0-gcj

配置新 java 的 alternatives

# alternatives --install /usr/bin/java java /usr/java/default/bin/java 20000 \
--slave /usr/bin/keytool keytool /usr/java/default/bin/keytool \
--slave /usr/bin/orbd orbd /usr/java/default/bin/orbd \
--slave /usr/bin/pack200 pack200 /usr/java/default/bin/pack200 \
--slave /usr/bin/rmid rmid /usr/java/default/bin/rmid \
--slave /usr/bin/rmiregistry rmiregistry /usr/java/default/bin/rmiregistry \
--slave /usr/bin/servertool servertool /usr/java/default/bin/servertool \
--slave /usr/bin/tnameserv tnameserv /usr/java/default/bin/tnameserv \
--slave /usr/bin/unpack200 unpack200 /usr/java/default/bin/unpack200 \
--slave /usr/bin/javaws javaws /usr/java/default/bin/javaws \
--slave /usr/bin/jcontrol jcontrol /usr/java/default/bin/jcontrol \
--slave /usr/bin/policytool policytool /usr/java/default/bin/policytool \
--slave /usr/lib/jvm/jre jre /usr/java/default/jre \
--slave /usr/bin/appletviewer appletviewer /usr/java/default/bin/appletviewer \
--slave /usr/bin/javac javac /usr/java/default/bin/javac \
--slave /usr/bin/apt apt /usr/java/default/bin/apt \
--slave /usr/bin/extcheck extcheck /usr/java/default/bin/extcheck \
--slave /usr/bin/HtmlConverter HtmlConverter /usr/java/default/bin/HtmlConverter \
--slave /usr/bin/idlj idlj /usr/java/default/bin/idlj \
--slave /usr/bin/jar jar /usr/java/default/bin/jar \
--slave /usr/bin/jarsigner jarsigner /usr/java/default/bin/jarsigner \
--slave /usr/bin/javadoc javadoc /usr/java/default/bin/javadoc \
--slave /usr/bin/javah javah /usr/java/default/bin/javah \
--slave /usr/bin/javap javap /usr/java/default/bin/javap \
--slave /usr/bin/jconsole jconsole /usr/java/default/bin/jconsole \
--slave /usr/bin/jdb jdb /usr/java/default/bin/jdb \
--slave /usr/bin/jhat jhat /usr/java/default/bin/jhat \
--slave /usr/bin/jinfo jinfo /usr/java/default/bin/jinfo \
--slave /usr/bin/jmap jmap /usr/java/default/bin/jmap \
--slave /usr/bin/jps jps /usr/java/default/bin/jps \
--slave /usr/bin/jrunscript jrunscript /usr/java/default/bin/jrunscript \
--slave /usr/bin/jsadebugd jsadebugd /usr/java/default/bin/jsadebugd \
--slave /usr/bin/jstack jstack /usr/java/default/bin/jstack \
--slave /usr/bin/jstat jstat /usr/java/default/bin/jstat \
--slave /usr/bin/jstatd jstatd /usr/java/default/bin/jstatd \
--slave /usr/bin/native2ascii native2ascii /usr/java/default/bin/native2ascii \
--slave /usr/bin/rmic rmic /usr/java/default/bin/rmic \
--slave /usr/bin/schemagen schemagen /usr/java/default/bin/schemagen \
--slave /usr/bin/serialver serialver /usr/java/default/bin/serialver \
--slave /usr/bin/wsgen wsgen /usr/java/default/bin/wsgen \
--slave /usr/bin/wsimport wsimport /usr/java/default/bin/wsimport \
--slave /usr/bin/xjc xjc /usr/java/default/bin/xjc \
--slave /usr/lib/mozilla/plugins/libjavaplugin.so  libjavaplugin.so /usr/java/default/jre/plugin/i386/ns7/libjavaplugin_oji.so

上边的配置不是标准的 alternatives 用法,原因是 Sun官方的 rpm安装包已经帮我们配置好了一组目录链接,如果想换版本,直接修改 /usr/java/defalut 目录的链接就可以。其实可以直接将上面的文件链接到 /usr/bin,但是修改或者删除比较麻烦,如果用 alternatives,可以直接通过下面语句进行删除。

# alternatives --remove  java /usr/java/default/bin/java

通过下面的语句将 jdk 切换到 openjdk,注意删除一个目录链接,最后不能加斜杠。

# rm -rf /usr/java/default
# ln -s /usr/lib/jvm/java-1.6.0-openjdk /usr/java/default

标准的 alternative 切换方式应该用下面的命令,不过这里用不上。

# alternatives --config  java

安装 jdk7 ,这里用的是 tar.gz 的安装包,需要手工做链接。

# wget -c http://download.oracle.com/otn-pub/java/jdk/7u2-b13/jdk-7u2-linux-i586.tar.gz
# mv jdk-7u2-linux-i586.tar.gz /usr/java/
# tar xzvf /usr/java/jdk-7u2-linux-i586.tar.gz
# rm -rf /usr/java/latest
# ln -s /usr/java/jdk1.7.0_02/ /usr/java/latest

配置 JAVA_HOME,编辑文件 /home/tommy/.bashrc,增加下面内容:

export JAVA_HOME=/usr/java/default

如果没有使用 alternatives,还要在上面增加下面的语句:

export PATH=$PATH:$JAVA_HOME/bin

参考文档

5.1.2. Maven

下载最新版本的 maven,把它复制到 /usr/local/apache-maven 目录下。

$ sudo mkdir /usr/local/apache-maven
$ cd /usr/local/apache-maven
$ sudo wget http://apache.etoak.com//maven/binaries/apache-maven-3.0.3-bin.tar.gz
$ sudo tar xzvf apache-maven-3.0.3-bin.tar.gz

修改 /home/tommy/.bashrc 文件,增加下面内容。

export M2_HOME=/usr/local/apache-maven/apache-maven-3.0.3
export M2=$M2_HOME/bin
export MAVEN_OPTS="-Xms256m -Xmx512m"
export PATH=$M2:$PATH

我需要通过 maven 将项目 deploy 到外部的主机上,所以需要修改 setting.xml文件。这里我没有修改全局的配置文件,复制一份到用户目录来修改。

$ cp /usr/local/apache-maven/apache-maven-3.0.3/conf/settings.xml ~/.m2/
$ $ vi .m2/settings.xml
# 增加下面内容
......
    <server>
          <id>googlecode.gaixie.m2-release</id>
          <username>xxxxxx</username>
          <password>xxxxxx</password>
    </server>
    <server>
          <id>googlecode.gaixie.m2-snapshot</id>
          <username>xxxxxx</username>
          <password>xxxxxx</password>
    </server>
    <server>
          <id>sonatype-staging</id>
          <username>xxxxxx</username>
          <password>xxxxxx</password>
    </server>
    <server>
          <id>sonatype-snapshots</id>
          <username>xxxxxx</username>
          <password>xxxxxx</password>
    </server>
.....