Linux下安装JDK的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下安装JDK的问题相关的知识,希望对你有一定的参考价值。

linux中安装完JDK1.7并配置好相关环境变量后执行命令出现下面的错误:
[root@redhat ~]#java -version
Error: dl failure on line 875
Error: failed /usr/local/jdk1.7.0_03/jre/lib/i386/client/libjvm.so, because /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by /usr/local/jdk1.7.0_03/jre/lib/i386/client/libjvm.so)

初步分析的原因:我安装的red hat linux的/lib中glibc库为2.3版本的,而安装jdk1.7需要glibc2.4版本的,所以报错。

处理:1、把我的linux中的glibc库升级到2.4版本,但是这个方法估计比较麻烦,不知道怎么弄,有谁知道告诉我下?
2、安装低版本的jdk,于是我重新安装jdk1.5,但是安装时报以下错误:
已经安装 jdk-1.7.0_03-fcs 套件(比 jdk-1.5.0_20-fcs 新)
初步分析:原来的 jdk-1.7.0_03-fcs套件还在系统中,但是我不知道怎么将其删掉,我用find命令查找名字为jdk-1.7.0_03-fcs的文件什么也没找到,该怎么办啊?
linux下安装JDK就这么麻烦吗?

分数虽然不多,但是真诚希望强人帮解决啊,不胜感激!

显示内容会包含下面几行信息,具体显示可能略有不同,比如版本号
rpm -qa |grep java
会列出你安装的JAVA 卸载
[oracle@orcl ~]$ rpm -qa |grep java
libgconf-java-2.12.4-6.el5
xmlrpc-javadoc-2.0.1-3jpp.1
java-1.4.2-gcj-compat-src-1.4.2.0-40jpp.115
glib-java-0.2.6-3.fc6
libgconf-java-2.12.4-6.el5
libglade-java-2.12.5-3.fc6
glib-java-0.2.6-3.fc6
java-1.6.0-openjdk-devel-1.6.0.0-1.2.b09.el5
cairo-java-1.0.5-3.fc6
libgnome-java-2.12.4-3.fc6
bsh-javadoc-1.3.0-9jpp.1
cairo-java-1.0.5-3.fc6
libgtk-java-2.8.7-3.el5
libgnome-java-2.12.4-3.fc6
java-1.4.2-gcj-compat-devel-1.4.2.0-40jpp.115
java-1.4.2-gcj-compat-devel-1.4.2.0-40jpp.115
libgtk-java-2.8.7-3.el5
gcc-java-4.1.2-46.el5
libglade-java-2.12.5-3.fc6
如果有依赖关系,提示无法卸载,使用rpm -e --nodeps 卸载就行了
没有直接删除的直接
rpm -e java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
就可以了
参考技术A 安装Java环境开发工具软件JDK
1、从Java官方网站下载相应的JDK版本jdk-6u33-linux-i586.bin
2、安装jdk-6u33-linux-i586.bin
# chmod a+x jdk-6u33-linux-i586.bin
# ./jdk-6u33-linux-i586.bin
运行以上命令会自动完成Java JDK安装。
3、设置Java JDK运行环境
# vim /etc/profile # 在此文件里添加以下内容
JAVA_HOME=/usr/java/jdk1.6.0_33
JRE_HOME=/usr/java/jdk1.6.0_33/jre
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME JRE_HOME CLASSPATH PATH
  设置完后,重启机器或注销后,运行以下命令:
# source /etc/profile # 临时使当前shell控制台配置生效
# java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Client VM (build 20.6-b01, mixed mode, sharing)
返回结果后,说明Java JDK安装成功。
参考技术B 首先你的0S是否安装了系统自带的开发环境.其次,你安装的版本是否和你的0S版本不兼容.你的JDK版本也太低了吧.建议装6.0的试试看.追问

JDK1.7是就是7.0,是最新的,不是太低是太高了

参考技术C 估计是你的linux版本太老,别说glibc2.4,现在的版本普遍都是glibc 2.10以上了

Linux下JDK到底应该安装在哪儿?

1 Linux 目录结构

即使这是个菜鸟级的问题,也经常难住老鸟。我就见过很资深的程序员把JDK不合适地安装到/home目录下。虽然不一定有最正确的安装位置,但一定有不适当的安装位置。为了确定我们到底应该把JDK安装在哪里,首先要了解一下Unix/Linux的目录结构。

  1. /bin 用来贮存用户命令。/usr/bin 也被用来贮存用户命令。  
  2.   
  3. /sbin 许多系统命令(例如 shutdown)的贮存位置。/usr/sbin 中也包括了许多系统命令。  
  4.   
  5. /root 根用户(超级用户)的主目录。  
  6.   
  7. /mnt 该目录中通常包括系统引导后被挂载的文件系统的挂载点。比如,默认的光盘挂载点是 /mnt/cdrom/。可以为U盘建一个挂载点:mkdir /mnt/usb。  
  8.   
  9. /boot 包括内核和其它系统启动期间使用的文件,最大不超过200M。通常我为 /boot 建一个primary分区是1G。  
  10.   
  11. /lost+found 被 fsck 用来放置零散文件(没有名称的文件)。  
  12.   
  13. /lib 包含许多被 /bin 和 /sbin 中的程序使用的库文件。目录 /usr/lib 中含有更多用于用户程序的库文件。/lib 目录下放置的是 /bin 和 /sbin 目录下程序所需的库文件。简单说,/lib 是内核级的;/usr/lib 是系统级的;/usr/local/lib 是用户级的。仅仅被 /usr 目录下的程序所使用的共享库不必放到 /lib 目录下。只有 /bin 和 /sbin 下的程序所需要的库有必要放到 /lib 目录下。  
  14.   
  15. /dev 贮存设备文件。  
  16.   
  17. /etc 包含许多配置文件和目录。  
  18.   
  19. /var 用于贮存variable(或不断改变的)文件,例如日志文件和打印机假脱机文件,虚拟机镜像文件等。  
  20.   
  21. /usr 包括与系统用户直接有关的文件和目录,例如应用程序及支持它们的库文件。  
  22.   
  23. /proc 一个虚拟的文件系统(不是实际贮存在磁盘上的),它包括被某些程序使用的系统信息。  
  24.   
  25. /initrd 用来在计算机启动时挂载 initrd.img 映像文件的目录以及载入所需设备模块的目录。不要删除 /initrd 目录。如果你删除了该目录后再重新引导 Red Hat Linux 时,你将无法引导你的计算机。  
  26.   
  27. /tmp 用户和程序的临时目录。 /tmp 给予所有系统用户读写权。  
  28.   
  29. /home 用户主目录的默认位置。  
  30.   
  31. /opt 可选文件和程序的贮存目录。该目录主要被第三方开发者用来简易地安装和卸装他们的软件包。  

 

在传统的unix系统中,/usr 通常只包含系统发行时自带的程序,而/usr/local 则是本地系统管理员用来自由添加程序的目录。这里有一条严厉而牢固的规则:除非在里面创建目录,unix发行版不得使用 /usr/local 。

对于Linux发行版,如 RedHat, Debian 等等,一个可能的规定是:/usr 目录只能由发行版的软件包管理工具负责管理,而对 /usr/local 却没有这样做。正是因为采用这种方式,软件包管理工具的数据库才能知道在 /usr 目录内的每一个文件。下面演示 Ubuntu 系统下如何安装JDK和配置环境变量。

2 安装JDK6

2.1 安装到 /usr/local/java

因此JDK可能比较合适的位置是 /usr/local/lib 下。我一般安装到 /usr/local/Java 下,这样避免搞乱 /usr/local/lib 目录。下面演示如何安装 JDK6。我使用的是 jdk-6u38-linux-x64.bin。进入它所在的目录,执行下列命令:

  1. $ sudo chmod 755 jdk-6u38-linux-x64.bin  
  2. $ sudo ./jdk-6u38-linux-x64.bin  
  3. $ sudo mkdir /usr/local/java  
  4. $ sudo mv ./jdk1.6.0_38 /usr/local/java  

 

3 配置环境JAVA变量

有3种方式配置JAVA环境变量。

3.1 /etc/profile

如果你的计算机仅仅作为开发使用时推荐使用这种方法. 所有用户的shell都有权使用这些环境变量。修改 /etc/profile 文件,执行下面的语句:

  1. $ sudo -s  
  2. # echo ‘export JAVA_HOME=/usr/local/java/jdk1.6.0_38‘ >> /etc/profile  
  3. # echo ‘export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH‘ >> /etc/profile  
  4. # echo ‘export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar‘ >> /etc/profile  

 

切换到任何一个用户,执行下面这个命令,环境变量的更改立即生效:

# source /etc/profile

检查JAVA环境变量更改是否生效:

$ java -version

3.2 ~/.profile

这个是最安全的方法,控制JAVA到当前用户。如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的 .profile, 如下:

  1. $ cd ~/  
  2. $ echo ‘export JAVA_HOME=/usr/local/java/jdk1.6.0_38‘ >> ./.profile  
  3. $ echo ‘export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH‘ >> ./.profile  
  4. $ echo ‘export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar‘ >> ./.profile  
  5. $ source ./.profile  
  6. $ java -version  
  7. or  
  8. $ java  

 

3.3 /etc/profile.d/java.sh

这种方式为所有用户增加JAVA环境变量,并且一启动就生效。强烈不建议这个方式,除非在你个人开发的计算机上。

    1. $ sudo -s  
    2. # echo ‘# add java environments to all users‘ > /etc/profile.d/java.sh  
    3. # chmod 755 /etc/profile.d/java.sh  
    4. # echo ‘export JAVA_HOME=/usr/local/java/jdk1.6.0_38‘ >> /etc/profile.d/java.sh  
    5. # echo ‘export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH‘ >> /etc/profile.d/java.sh  
    6. # echo ‘export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar‘ >> /etc/profile.d/java.sh  
    7. # shutdown -r now 




以上是关于Linux下安装JDK的问题的主要内容,如果未能解决你的问题,请参考以下文章

Linux下jdk安装

如何在linux下安装jdk

Linux下源码安装JDK7

Linux CentOS下安装JDK

Linux下jdk的安装卸载切换

linux下怎样安装jdk1.8?