项目开发环境搭建手记(2.Jdk安装——替代原有的OpenJDK)

版权声明:本文为博主fbysss原创文章,转载请注明出处 https://blog.csdn.net/fbysss/article/details/44085295
作者:fbysss
QQ:溜酒酒吧酒吧吾散
blog:blog.csdn.net/fbysss
声明:本文由fbysss原创,转载请注明出处

前言:Centos下,Java已经安装好了,1.7版本的,但是并没有JAVA_HOME等环境变量。于是:

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.9

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

但是,OpenJDK和Oracle的JDK还是有所不同。安装官方的版本感觉更好。

于是,下载Jdk7进行安装。

问题1centos下,rzsz这样的传输文件命令没有

解决1

wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz

或者wget ftp://rpmfind.net/linux/centos/6.5/os/x86_64/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm

问题又来了:

rpm -rvh ./lrzsz-0.12.20-27.1.el6.x86_64.rpm

出现错误:

rpm: arguments to --root (-r) must begin with a /

解决2:

原来是命令敲错了。应该是

rpm -ivh./lrzsz-0.12.20-27.1.el6.x86_64.rpm

rpm -ivh jdk-7u71-linux-x64.rpm

Preparing...               ########################################### [100%]

packagejdk-2000:1.7.0_71-fcs.x86_64 is already installed

那么,java到底安装到哪里了?

rpm -ql jdk-7u71-linux-x64

输出:

 package jdk-7u71-linux-x64 is not installed

Why?搞什么东东呢

 

rpm -qa |grep java 查看已安装的包

Tips:如果要看更详细内容,可以用rpm -qai

 

[root@localhost sss]# rpm -qa |grep jdk

java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

jdk-1.7.0_71-fcs.x86_64

原来centos已经安装了这个玩意。在rpm自己的jdk的时候,并不是提示成功,而是提示已经有一个jdk了,就没有安装成功。

rpm -e jdk-1.7.0_71-fcs.x86_64

rpm -e java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

这样一来,至少1.7版的java不会再有了。

jdk-1.7.0_71-fcs.x86_64重新安装上了(注意,和rpm包名并不相同)

 

如此说来,原来可能也已经安装好了?也许刚才不用卸载也可以,不过是有两个1.7而已,通过JAVA_HOME,PATH和CLASSPATH等设置就可以了。

 

ls -l --full-time  /usr/java/jdk1.7.0_71可以看到,完整安装时间,表示的确是刚才安装的。

[root@localhost sss]# /usr/java/jdk1.7.0_71/bin/java-version

java version "1.7.0_71"

Java(TM) SE Runtime Environment (build 1.7.0_71-b14)

Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixedmode)

可以看到,这个java已经不是open jdk了。

ok。

 

vi /etc/profile

在文件尾部加入

export JAVA_HOME=/usr/java/jdk1.7.0_71

exportCLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

 

source /etc/profile

但是问题来了。

java -verion

出现的居然是

OpenJDK Runtime Environment (IcedTea6 1.13.0pre)(rhel-1.66.1.13.0.el6-x86_64)

OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)

很容易查到,/usr/bin下面有一个java

[sss@localhost ~]$ ll /usr/bin/java

lrwxrwxrwx. 1 root root 22 Jan  5 20:30/usr/bin/java -> /etc/alternatives/java

发现这是一个链接

[sss@localhost ~]$ ll /etc/alternatives |grep java

可以看到更进一步的链接

lrwxrwxrwx. 1 root root 46 Jan  5 20:30 java ->/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

删除这个链接:

alternatives --remove java /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

[sss@localhost ~]$ ll /etc/alternatives |grep java

java -> /usr/lib/jvm/jre-1.5.0-gcj/bin/java

我去。。。居然自动链接了下一个版本。

看来这个alternatives是有来头的。

http://www.cnblogs.com/killkill/archive/2010/08/23/1806468.html

看了这篇文章,知道怎么做了。

 

可以想象,使用

alternatives  --config java

就可以看到多个版本的java管理起来了。

现在也不迟,还有一个1.5版本,我们不卸载了。直接增加一个sun的1.7版本:

 

如果中间弄错了,可以remove。要修改优先级的话,直接就是覆盖install,再打一遍

比如 alternatives --remove java/usr/java/jdk1.7.0_71/java   ——这个路径不存在,有问题,remove了。

 

[root@localhost sss]# alternatives --display java

java - status is manual.

link currently points to /usr/java/jdk1.7.0_71/bin/java

/usr/lib/jvm/jre-1.5.0-gcj/bin/java - priority 1500

slave keytool: /usr/lib/jvm/jre-1.5.0-gcj/bin/keytool

slave rmiregistry:/usr/lib/jvm/jre-1.5.0-gcj/bin/rmiregistry

slave jre_exports: /usr/lib/jvm-exports/jre-1.5.0-gcj

slave jre: /usr/lib/jvm/jre-1.5.0-gcj

/usr/java/jdk1.7.0_71/bin/java - priority 1000

slave keytool: (null)

slave rmiregistry: (null)

slave jre_exports: (null)

slave jre: (null)

Current `best' version is/usr/lib/jvm/jre-1.5.0-gcj/bin/java.

 

为啥还是1.5是 best呢?

原来是优先级的问题。

alternatives --install /usr/bin/java java/usr/java/jdk1.7.0_71/bin/java 1600

这样就改过来了。

Current `best' version is /usr/java/jdk1.7.0_71/bin/java.

 

这里还有两个非常实用的命令:

whichwhereis

因为我们在打命令的时候,比如javac,有时候并不知道是哪个版本,javac没有版本号这个参数,至少可以通过which javac看看它在哪个路径。

whereis则是把命令所在的目录都列出来。

这两个命令查找的都是环境变量$PATH(非全盘扫描),但which只找第一个,whereis全部。

/usr/bin/javac 没法知道版本,咋整呢?

ll /usr/bin/javac

[root@localhost sss]# ll /usr/bin/javac

lrwxrwxrwx. 1 root root 27 Jan  5 20:32/usr/bin/javac -> /usr/java/default/bin/javac

ll /usr/java/default/bin/,原来这个目录下也有java

java -version,ok,是正确的jdk

java和javac在同一目录,java没问题,javac也没问题。

ll --full-time /usr/java/default/ 也可以看到bin目录是刚才创建的。



猜你喜欢

转载自blog.csdn.net/fbysss/article/details/44085295