在linux上安装JDK碰到的问题以及linux常用命令的学习

来源:互联网 发布:windows xp密钥 编辑:程序博客网 时间:2024/05/20 11:51

操作系统:ubuntu 12.04

一、在oracle官网上下载最新版本的JDK    :  jdk-6u37-linux-x64.bin

下载之后默认放在了    /home/myname/下载     目录下  由于目录有中文,之前遇到过目录带中文的种种纠结问题,不想放在这里,于是在命令行

myname@myname-PC:~$ sudo mv /home/myname/下载/jdk-6u37-linux-x64.bin /opt

对以上命令的解释:

1)$符后面是输入linux命令的地方,命令和$符之间有一个空格区域

2)$和:之间表示当前所在目录,

3)~代表用户目录,和cd命令结合使用可以方便的进到用户目录, 例如  cd ~     也可以这样   cd $HOME   $HOME也表示用户目录,这个HOME变量的值是在配置文件里设置的

4)命令前缀sudo   :  superuserdo的缩写 表示以超级用户(系统管理员)身份运行后面的命令,如果我们不是用超级用户(系统管理员)的身份登录的系统,应用一些命令时会受到限制,提示 权限不足   前面加上sudo就可以解决这个问题

5)命令mv:这里有两个参数,第一个参数是/home/myname/下载/jdk-6u37-linux-x64.bin,表示你要移动的文件,用完全路径表示比较好,第二个参数是/opt,表示你移动文件的目标目录, 两个参数之间有空格分隔

6)前面myname表示当前用户名,后面myname-PC表示计算机名,用@连接

把JDK的安装文件移动到/opt以后, 进入opt目录,输入命令后回车

myname@myname-PC:~$ cd /opt   回车

myname@myname-PC:/opt$

cd命令:进入指定的目录  例如:  cd /(进入系统根目录),cd /home(进入系统根目录下的home目录),cd $HOME(进入HOME变量表示的目录,即用户目录,

与 cd ~等效),cd ..(从当前目录向上退一级)

给/opt下面的文件赋权限:

myname@myname-PC:/opt$ chmod 755 *

chmod命令:给文件赋权限,在/opt下ll一下可以看到:

drwxr-xr-x  8 root   root       4096 10月 23 12:08jdk1.6.0_37/
-rwxr-xr-x  1 gchong gchong 72048548 10月 23 12:01 jdk-6u37-linux-x64.bin

对于第一行最高位 d表示这是一个目录,对于第二行最高位 -表示这是一个文件 ,后面r表示可读,w表示可写,x表示可执行,-表示无权限,不清楚为什么有三组权限,每一组权限有三位,由低到高分别是2的0次幂,1次幂,2次幂,所以权限rwx:4+2+1=7 r-x:4+0+1=5  r-x:4+0+1=5

再看上面的命令  chmod 755 *   就是给当前目录下的所有内容(包括文件和目录)赋rwxr-xr-x权限

其实我们要的就是可执行权限, 只要赋x权限就可以了, 下面是执行这个下载的文件

myname@myname-PC:/opt$ ./jdk-6u37-linux-x64.bin    “.” 表示当前目录

二、运行后会提示安装成功的字样,在window系统里安完JDK就要修改一下环境变量path的值,一边我们能正常使用java,javac命令,而在linux系统下会复杂一点,linux环境下和环境变量有关的文件有以下四种,粗略记录如下

1)   /etc/environment  文件

2)   /etc/profile 文件

3)  ~/.profile 文件

4)  ~/.env 文件  我不确定是不是在~目录下(用户目录)

他们的区别,前三个文件只有在登录系统以后才被读取,且读取这一次, 而.env文件是在用户没开一个进程都会被执行一次,它们的读取顺序就是1 2 3 4 这样

详细内容查阅  :    http://blog.chinaunix.net/uid-15194453-id-3012479.html 

我在environment下面加入

JAVA_HOME="/opt/jdk1.6.0_37"

PATH=“$PATH:$JAVA_HOME/bin”

CLASSPATH=".:$JAVA_HOME/lib"

总觉得没什么问题,但是重启电脑后, ubuntu就登不上去了, 在网上找也说最好别再environment下修改环境变量, 容易悲剧。。。

配置完环境变量以后, 在命令行输入  java -ersion  有的机器可以看到JDK的版本信息,代表安装成功:

java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode)

而有的机器则会出现这样的信息:

程序“java”已包含在下列软件包中:
* gcj-4.4-jre-headless
* gcj-4.5-jre-headless
* openjdk-6-jre-headless
请尝试:apt-get install <选定的软件包>


这是由于之前安装过JDK,或者安装过其他带有java环境的软件自动安装了软件带有的JDK, 这样就导致我们的系统里存在多个JDK,它们的版本可能相同,也可能不同,

对于这种情况,linux是用update-alternatives命令解决的,update-alternatives 命令是管理软件多版本的工具


三、update-alternatives命令

update-alternatives --install /usr/bin/java java /opt/jdk1.6.0_37/bin/java

解释: 给alternatives安装一个符号链接/usr/bin/java,他的名字是 java  对应的可执行应用程序路径:/opt/jdk1.6.0_37/bin/java

在命令行我们输入命令:

myname@myname-PC:~$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 10月 23 21:58 /usr/bin/java -> /etc/alternatives/java  

可以发现, /usr/bin/java 是指向 /etc/alternatives/java 的

再输入

myname@myname-PC:~$ ls -l /etc/alternatives/java 

lrwxrwxrwx 1 root root 25 10月 23 21:58 /etc/alternatives/java -> /opt/jdk1.6.0_37/bin/java

可以发现,/etc/alternatives/java 也是个符号链接,  是指向  /opt/jdk1.6.0_37/bin/java 的, 这才是最终的可执行文件


update-alternatives --display java   :显示java在alternatives里的配置信息

update-alternatives --config java    : 配置java对应的符号链接

There are 2choices for the alternative jdk (providing /usr/bin/jdk).

 

 Selection   Path                      Priority   Status

--------------------------------------------------------------------------

0           /home/haili/jdk1.5.0_22   255     auto mode

1           /home/haili/jdk1.5.0_22   255     manual mode

* 2           /home/haili/jdk1.6.0_30   254     manual mode

这是网上的例子, 大概情况差不多, 选择你想使用的命令的link值



update-alternatives –remove java /opt/jdk1.6.0_37/bin/java  删除这个java命令的配置


在命令行输入的命令, 都是一个链接符号:

比如  java

命令行中的java只是一个链接符号, 先被链接到/usr/bin中, 在这个目录下找有没有java,这也是为什么我们要要设置环境变量path, path="/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/usr/games"

然后   /usr/bin/java 也是一个符号链接, 链接到/etc/alternatives/java, 它仍然是个符号链接, 最终  

/etc/alternatives/java链接到实际的程序   /opt/jdk1.6.0_37/bin/java








原创粉丝点击