您的位置:首页 > 运维架构 > Linux

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

2012-10-23 23:26 1151 查看
操作系统: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐