我已经设置了JAVA_HOME和PATHvariables,但是java -version仍然显示旧的

我正在使用Linux Mint Cinnamon 14.我已经在~/.profile设置了$JAVA_HOME$PATH环境variables,如下所示:

 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版本时,它显示默认(已安装的开放jdk)Java版本。 我怎样才能覆盖我下载的默认开放jdk?

更新:

which java表示/ usr / bin / java

$JAVA_HOME/bin/java -version说'权限被拒绝'

sudo $JAVA_HOME/bin/java -version (要求密码,然后)说找不到命令

但是cd $JAVA_HOME/binls显示它是正确的目录。

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

  1. env的输出 – 具体是PATH
  2. which java告诉你什么?
  3. $JAVA_HOME\bin是否有一个java可执行文件,并执行位设置? 如果不是chmod a+x java呢。

我相信在添加/更改JAVA_HOMEPATH之后,你的source .profile

另外,您可以通过编写来帮助您日后维护JDK安装

 export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35 export PATH=$JAVA_HOME/bin:$PATH 

代替。 那么当你设置JDK安装时,你只需要更新一个envvariables。

干杯,

更新Java的替代品

java可执行文件没有在您的JAVA_HOMEfind,它只取决于您的PATH

update-java-alternatives是一个pipe理整个系统的好方法:

 update-java-alternatives -l 

示例输出:

 java-7-oracle 1 /usr/lib/jvm/java-7-oracle java-8-oracle 2 /usr/lib/jvm/java-8-oracle 

select其中一个select:

 sudo update-java-alternatives -s java-7-oracle 

update-alternatives ,它通过符号链接pipe理工作。 其优点是一次pipe理所有Java实用程序的符号链接: javacjavajavap

我还没有在JDK上看到JAVA_HOME效果。 到目前为止,我只看到它在第三方工具中使用, 例如Maven 。

$ JAVA_HOME / bin / java -version说'权限被拒绝'

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

做一个

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

看看为什么你不能访问或运行这个程序。

当它searchjava的时候,从左到右的path条目是用下面的方式分隔的:所以你需要在/ usr / bin之前添加最新的jdk / bin目录的path,所以当它search到的时候会find最新的停止进一步search。

即PATH = / usr / java / jdk_1.8 / bin:/ usr / bin:…..等等。

然后使用以下命令初始化用户configuration文件:source〜/ .bash_profile

并检查:[哪个java]

你会得到正确的。

有一个简单的方法,只需从“/ usr / bin”中删除符号链接即可。 它会工作。

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

尝试运行这个:

 sudo rm -rd jdk1.6.0_* #it may not let you delete without sudo 

然后,修改/添加您的JAVA_HOME和PATHvariables。

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

最简单的方法是删除链接或编辑/ usr / bin / java。 这有一个调用来执行在所提到的path的Java。