zoukankan      html  css  js  c++  java
  • (转)Linux(Centos)之安装Java JDK及注意事项

    场景:天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣。

    1 准备工作

    下面配置jdk的方式在具有root权限时候能够执行。如果没有root权限,建议使用当前用户目录配置的方式进行配置:

    编辑文件

    vi $HOME/.profile

    并在文件末尾添加

    #export JRE_HOME=$ORACLE_HOME/jdk/jre
    export JAVA_HOME=/home/simu/jdk1.7.0_67/jre
    export PATH=$PATH:$JAVA_HOME/bin

    最后执行:

    source $HOME/.profile

    1.1 检查系统版本

    建议:在安装软件时候用root用户进行安装。

    因为Java JDK区分32位和64位系统,所以在安装之前必须先要判断以下我们的Centos系统为多少位系统,命令如下:

    uname -a
    解释:如果有x86_64就是64位的,没有就是32位的。后面是X686或X86_64则内核是64位的,i686或i386则内核是32位的
     
    由此可以判断我的centos为64位系统,故而我需要下载64位系统的JDK。
    查询本地jdk的安装情况
    rpm -qa|grep java

     查询结果如下:

    java-1.6.0-openjdk-1.6.0.38-1.13.10.0.el6_7.x86_64
    java-1.7.0-openjdk-1.7.0.95-2.6.4.0.el6_7.x86_64
    tzdata-java-2015g-2.el6.noarch
    卸载查询出来的jdk

    卸载上面三个文件(--nodeps 的作用:忽略依赖的检查):

    sudo rpm -e --nodeps java-1.6.0-openjdk-1.6.0.38-1.13.10.0.el6_7.x86_64
    
    sudo rpm -e --nodeps java-1.7.0-openjdk-1.7.0.95-2.6.4.0.el6_7.x86_64
    
    sudo rpm -e --nodeps tzdata-java-2015g-2.el6.noarch 

    也可以一起卸载:

    sudo rpm -e --nodeps java-1.6.0-openjdk-1.6.0.38-1.13.10.0.el6_7.x86_64 java-1.7.0-openjdk-1.7.0.95-2.6.4.0.el6_7.x86_64 tzdata-java-2015g-2.el6.noarch
     

    JDK 1.8 安装

    • 我们以安装 jdk-8u72-linux-x64.tar.gz 为例
    • 我个人习惯 /opt 目录下创建一个目录 setups 用来存放各种软件安装包;在 /usr 目录下创建一个 program 用来存放各种解压后的软件包,下面的讲解也都是基于此习惯
    • 我个人已经使用了第三方源:EPEL、RepoForge,如果你出现 yum install XXXXX 安装不成功的话,很有可能就是你没有相关源,请查看我对源设置的文章
    • 解压安装包:sudo tar -zxvf jdk-8u72-linux-x64.tar.gz
    • 移到解压包到我个人习惯的安装目录下:mv jdk1.8.0_72 /usr/program/
    • 配置环境变量:
      • 编辑配置文件:sudo vim /etc/profile
      • 在该文件的最尾巴,添加下面内容:
      # JDK
      JAVA_HOME=/usr/program/jdk1.8.0_72
      JRE_HOME=$JAVA_HOME/jre
      PATH=$PATH:$JAVA_HOME/bin
      CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      export JAVA_HOME
      export JRE_HOME
      export PATH
      export CLASSPATH
      
      • 执行命令,刷新该配置(必备操作):source /etc/profile
      • 检查是否使用了最新的 JDK:java -version

    1.2下载JDK

    这里我用的是1.7版本的JDK,并没有选择新版本1.8,因为我觉得这个版本的JDK比较稳定。

    底部的Java Archive保存的是Java的历史存档,点击进入

    这里就找到要下载的1.7版本了,继续点击

    下面两个都是64位的JDK,两个的区别在于安装方式不同。参考http://www.cnblogs.com/lixuwu/p/6097102.html

    这里我把两个软件都下载下来进行练习

    1.3 JDK安装环境

    操作需要的软件以及系统如下:虚拟机(Vmware),虚拟机中安装的Centos系统,Xshell,FileZila,jdk-7u80-linux-x64.tar.gz

    2 安装JDK

    通过上面准备工作之后,我们现在已经拥有了可以安装JDK的环境。

    2.1 创建用户目录

    然后在Xshell中使用命令跳转到用户指定的文件夹下面(项目中通常每个项目都有自己单独的JDK配置):project

    在使用非root用户登录时候,按照如下步骤操作:

    #首先切换到root权限
    su
    
    #创建目录
    mkdir project
    
    ll
    
    cd project/

     

    2.2 上传JDK文件到指定目录

    然后使用FileZila将jdk复制到project文件夹下面,如图所示:

    下图是解压后的目录列表,上传的文件是已经标注。

    2.3 解压JDK

    直接在用JDK文件所在目录解压缩文件

    tar -zxv -f  jdk-7u80-linux-x64.tar.gz

    查看JDK文件内容:

    通过上面的步骤,我们的jdk已经全部完成安装了,接下来就是更重要的一步:配置环境变量

    java JDK的配置分为两种情况,一种是ROOT用户进行配置,一种是普通用户进行配置。ROOT用户配置完成后,即为Linux下各用户(ROOT用户和各非ROOT用户)默认的JDK配置。而普通用户配置完后只对当前用户,也就是自己有效。

    当然,根据就近原则,若ROOT用户和当前用户都对JDK进行了配置,Linux使用当前用户配置的JDK信息。

    2.4 配置root用户环境变量

    在root用户下面,配置全局的环境变量

    1、先执行

    vim /etc/profile

    在JDK所在目录下,查找JDK的根目录

    pwd

    JDK的绝对路径在配置文件中会用到。

    2、 打开之后按键盘(i)进入编辑模式,将下面的内容复制到底部

    JAVA_HOME=/home/cs408/project/jdk1.7.0_80
    export JRE_HOME=$JAVA_HOME/jre PATH
    =$JAVA_HOME/bin:$PATH CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar export PATH JAVA_HOME CLASSPATH
    #add by lxw
    export JAVA_HOME=/usr/java/jdk1.7.0_67
    export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    备注:根据上面的配置信息,我们已经将环境变量的配置完成。
    需要注意的是,PATH在配置的哦时候,一定要把AVA_HOME/bin放在最前面,不然使用java命令式,系统会找到以前的JAVA,在不往下找了,这样java这个可执行文件运行的目录其实不在$JAVA_HOME/bin下,而在其它目录下,会造成很大的问题。
    4、写完之后我们按键盘(ESC)按钮退出,然后按(:wq)保存并且关闭Vim。
    5、配置完成之后,最重要的一步就是使文件立即生效
    source /etc/profile

    2.5 配置当前用户环境变量 

    首先使用cd命令,切换到当前用户目录,并查看用户的环境变量配置文件,有的是.bash_profile,这里是.profile 文件:

    然后执行 

    vi .profile
    
    #将java变量信息粘贴到文件底部
    export JAVA_HOME=/home/tws/server/jdk1.7.0_67
    export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin

    ps:如果2在1上面环境变量不会生效。为稳妥起见,把java的环境变量放在最下面。

    保存,然后执行生效命令

    source .profile

    3 验证是否成功

    java -version
    
    echo $JAVA_HOME

    4 卸载JDK

     首先执行命令查看服务器下的jdk的版本:
    rpm -qa|grep jdk 

     

    然后执行命令,将上面查询出来的每个版本以此删掉即可。

     yum -y remove java java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64

    5 补充

    5.1 问题

    • linux服务器重启后环境变量失效,需要重新执行

    source /etc/profile

    如何保证重启后环境变量生效,还待验证

    • root用户安装完jdk后,非root用户不能执行java -version 命令,执行如下命令即可

    source /etc/profile

    OpenJDK和JDK之间的区别联系

    历史上的原因是,OpenJDK是JDK的开放原始码版本,以GPL(General Public License)协议的形式放出(题主提到的open就是指的开源)。在JDK7的时候,OpenJDK已经作为JDK7的主干开发,SUN JDK7是在OpenJDK7的基础上发布的,其大部分原始码都相同,只有少部分原始码被替换掉。使用JRL(JavaResearch License,Java研究授权协议)发布。至于OpenJDK6则更是有其复杂的一面,首先是OpenJDK6是JDK7的一个分支,并且尽量去除Java SE7的新特性,使其尽量的符合Java6的标准。关于JDK和OpenJDK的区别,可以归纳为以下几点:

    授权协议的不同:OpenJDK采用GPL V2协议放出,而SUN JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。

    OpenJDK不包含Deployment(部署)功能:部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在OpenJDK中是找不到的。

    OpenJDK源代码不完整:这个很容易想到,在采用GPL协议的OpenJDK中,SUN JDK的一部分源代码因为产权的问题无法开放给OpenJDK使用,其中最主要的部份就是JMX中的可选元件SNMP部份的代码。因此这些不能开放的源代码 将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。而Icedtea则为这些不完整的部分开发了相同功能的源代码 (OpenJDK6),促使OpenJDK更加完整。

    部分源代码用开源代码替换:由于产权的问题,很多产权不是SUN的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。


    OpenIDK只包含最精简的JDK:OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。

    不能使用Java商标:这个很容易理解,在安装OpenJDK的机器上,输入“java -version”显示的是OpenJDK,但是如果是使用Icedtea补丁的OpenJDK,显示的是java。


    总之,在Java体系中,还是有很多不自由的成分,源代码的开发不够彻底,希望Oracle能够让JCP更自由开放一些,这也是所有Java社区所希望的。

      
     
  • 相关阅读:
    Leetcode 811. Subdomain Visit Count
    Leetcode 70. Climbing Stairs
    Leetcode 509. Fibonacci Number
    Leetcode 771. Jewels and Stones
    Leetcode 217. Contains Duplicate
    MYSQL安装第三步报错
    .net 开发WEB程序
    JDK版本问题
    打开ECLIPSE 报failed to load the jni shared library
    ANSI_NULLS SQL语句
  • 原文地址:https://www.cnblogs.com/lixuwu/p/6096794.html
Copyright © 2011-2022 走看看