JAVA_HOME和PATH已设置,但JAVA-version仍显示旧版本

JAVA_HOME和PATH已设置,但JAVA-version仍显示旧版本,java,linux,environment-variables,linux-mint,Java,Linux,Environment Variables,Linux Mint,我用的是Linux薄荷肉桂14。我在~/.profile中设置了$JAVA\u HOME和$PATH环境变量,如下所示: export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35 export PATH=/home/aqeel/development/jdk/jdk1.6.0_35/bin:$PATH 然后我做了source~/.profile以进行适当的更改 当我执行java-version命令检查活动的java版本时,它会显示默认(已

我用的是Linux薄荷肉桂14。我在
~/.profile
中设置了
$JAVA\u HOME
$PATH
环境变量,如下所示:

export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35
export PATH=/home/aqeel/development/jdk/jdk1.6.0_35/bin:$PATH
然后我做了
source~/.profile
以进行适当的更改

当我执行
java-version
命令检查活动的java版本时,它会显示默认(已安装的OpenJDK)java版本。如何用我下载的jdk覆盖默认的OpenJDK

更新:

哪个java
说/usr/bin/java

$JAVA_HOME/bin/JAVA-version
表示“权限被拒绝”

sudo$JAVA\u HOME/bin/JAVA-version
(然后询问密码)表示找不到命令


但是
cd$JAVA\u HOME/bin
,和
ls
显示它是正确的目录。

虽然看起来您的设置是正确的,但有几件事需要检查:

  • env
    的输出-具体地说是
    PATH
  • command-vjava
    告诉您什么
  • $java\u HOME\bin
    中是否有
    java
    可执行文件,并且是否设置了执行位?如果不是
    chmoda+xjava
    it
  • 我相信在添加/更改
    JAVA_HOME
    路径后,您已经有了
    源文件
    .profile

    此外,您还可以通过编写以下内容来帮助自己将来维护JDK安装:

    export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35
    export PATH=$JAVA_HOME/bin:$PATH
    
    然后,在设置JDK安装时,只需要更新一个env变量

    最后,您可能需要运行
    hash-r
    来清除Bash程序缓存。其他Shell可能需要类似的命令

    干杯

    $JAVA_HOME/bin/JAVA-版本显示“权限被拒绝”

    如果您无法访问或运行代码,则将其添加到路径中时将被忽略。您需要使其可访问并可运行,或者获取您自己的副本

    做一个

    ls -ld $JAVA_HOME $JAVA_HOME/bin $JAVA_HOME/bin/java
    

    要了解您无法访问或运行此程序的原因,有一种简单的方法,只需从“/usr/bin”中删除符号链接即可。它会工作。

    当它搜索java时,它会从左到右查看路径条目,路径条目之间用:分隔,因此您需要在/usr/bin之前添加最新jdk/bin目录的路径,这样当它搜索时,它会找到最新的一个并停止进一步搜索

    i、 e.PATH=/usr/java/jdk_1.8/bin:/usr/bin:。。。。。等等

    然后使用以下命令初始化用户配置文件:source~/.bash\u profile

    并检查:[哪个java]


    你会得到正确的答案。

    更新java替代方案

    java\u HOME
    中找不到
    java
    可执行文件,它只取决于
    路径

    update java alternations
    是管理整个系统的一种好方法,它通过以下方式实现:

    update-java-alternatives -l
    
    样本输出:

    java-7-oracle 1 /usr/lib/jvm/java-7-oracle
    java-8-oracle 2 /usr/lib/jvm/java-8-oracle
    
    选择一个备选方案:

    sudo update-java-alternatives -s java-7-oracle
    
    与更新备选方案类似,它通过符号链接管理工作。它的优点是一次管理到所有Java实用程序的符号链接:
    javac
    Java
    javap
    ,等等


    我还没有看到JAVA_HOME对JDK的影响。到目前为止,我只看到它在第三方工具中使用。

    更新
    ~/.profile
    ~/.bash_profile
    有时不起作用。我刚刚删除了JDK 6和
    source
    d
    .bash\u profile

    尝试运行以下命令:

    sudo rm -rd jdk1.6.0_* #it may not let you delete without sudo
    
    然后,修改/添加JAVA_HOME和PATH变量

    source ~/.bash_profile #assuming you've updated $JAVA_HOME and $PATH
    

    在Linux Mint 18中,请务必检查/etc/profile.d/jdk_home.sh我将此文件重命名为jdk_home.sh.old,现在我的路径不会一直被覆盖,我可以调用java-version并按预期查看java 9。尽管我在
    更新aternatives--config Java
    中正确地选择了Java 9,但这个jdk_home.sh文件在启动时一直覆盖$PATH。

    如果您想使用从Oracle网站下载的jdk,对我有效的方法(使用Mint)是使用更新替代方法

  • 我下载了JDK并将其解压缩到任意位置,例如在/home/aqeel/development/JDK/jdk1.6.035中
  • 我跑:

    sudo update-alternatives --install /usr/bin/java java /home/aqeel/development/jdk/jdk1.6.0_35/bin/java 1
    
    现在您可以执行
    sudo更新选项--config java
    选择您的java版本

  • 这没有设置我想要配置的JAVA_HOME变量,所以我只是将它添加到我的~/.bashrc中,包括一个
    export JAVA_HOME=“/HOME/aqeel/development/jdk/jdk1.6.0_35”
    语句
  • 现在,我下载了两个jdk(假设第二个jdk已被提取到/home/aqeel/development/jdk/jdk-10.0.1)

    如何根据当前使用的JAVA动态更改JAVA_主页

    我的解决方案不是很优雅,我很确定有更好的选择,但无论如何:

  • 要根据所选的JAVA备选方案动态更改JAVA_主页,我在~/.bashrc中添加了以下代码段:

    export JAVA_HOME=$(update-alternatives --query java | grep Value: | awk -F'Value: ' '{print $2}' | awk -F'/bin/java' '{print $1}')
    
  • 最后(这超出了范围)如果您必须不断更改java版本,您可能需要考虑:

  • 向~./bash\u别名添加一个别名


  • (您可能需要创建该文件,并且可能需要取消~/.bashrc中与此相关的部分的注释)

    使用updatealternations命令检查Linux系统上可用的Java版本:

     $ sudo update-alternatives --display java
    
    现在有合适的候选版本可供更改,您可以通过运行以下命令在可用Java JRE之间切换默认Java版本:

     $ sudo update-alternatives --config java
    
    出现提示时,选择要使用的Java版本。1、2、3等

    现在,您可以验证默认Java版本的更改,如下所示

     $ java -version
    
    试试这个:

    • export JAVA\u HOME=将\u放在这里\u您的\u JAVA\u HOME\u路径
    • 键入export PATH=$JAVA\u HOME/bin:$PATH(确保$JAVA\u HOME是PATH中的第一个元素)
    • 试试jav
       $ java -version