zoukankan      html  css  js  c++  java
  • ubuntu系统中java -version所显示的版本与/etc/profile中配置的$JAVA_HOME的关系

    问题产生

    ubuntu 18.04环境下,执行

    java -version

    发现与/etc/profile中的$JAVA_HOME所设置的java版本不同。

    推测原因

    最近用apt install 安装过ubuntu自带的eclipse,有可能是把一些配置覆盖了。

    可能的解决方案

    方案一

    sudo gedit ~/.profile

    在末尾加上:
    export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_21

    然后保存关闭,使用source更新下
    $ source ~/.profile

    使用env命令察看JAVA_HOME的值
    $ env
    如果JAVA_HOME=/usr/lib/jvm/jdk1.7.0_21,说明配置成功。

    此前我并没有配置这个文件,我配置的是全局的/ect/profile,java -version也是生效的。暂时忽略。

    方案二

    据说java -version只显示环境变量中的PATH所指向的第一个含有java执行文件的版本。

    打开我的环境变量

    vim /etc/environment

    内容如下:

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

    并没有我设置的java路径,/usr/bin,这个,是自动安装的openjdk的java执行文件路径,所以当前的版本显示的是它。

    在前面强行插入我的java路径“/opt/jdk1.8.0_201/bin:/opt/jdk1.8.0_201/jre/bin:”,保存

    source /etc/enviroment

    source 生效。这时再用

    java -version

    就能够看到我设置的java的版本了。

    java version "1.8.0_201"

    这种方案能够正常显示版本,但能否正常编译,我无法再测试,因为看到了方案三,并在尝试方案三的时候,不知道怎样退回。留作一个研究课题。

    方案三

    修改系统默认jdk

    此方案来自http://www.cnblogs.com/bluestorm/archive/2012/05/10/2493592.html

    # 安装新版本的jdk
    $ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_21/bin/java 300 
    $ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_21/bin/javac 300 

    执行了上面的两条命令,系统中就有了两个版本的java,下面两条命令,是设置系统默认使用哪个java

    $ sudo update-alternatives --config java 
    $ sudo update-alternatives --config javac


     

    输入前面的数字就可以设置默认的java版本。

    再次执行java -version

    就可以得到自定义的java版本了。

    但是,这些设置是写在哪里的?就是说执行了update-alternatives以后,哪个文件被修改了?怎样退回去?有待研究。

  • 相关阅读:
    领域驱动设计(DomainDriven Design)
    Windows服务相关文档
    Attributes概述
    异步调用WebService方式!
    Msdn 杂志 asp.net ajax 文章汇集
    JavaScript
    常用数组效率比较
    Windows服务
    SOA实战
    Nunit使用方法
  • 原文地址:https://www.cnblogs.com/Sabre/p/10417821.html
Copyright © 2011-2022 走看看