JAVA_HOME和PATH已设置,但JAVA-version仍显示旧版本
我用的是Linux薄荷肉桂14。我在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版本时,它会显示默认(已
~/.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
itJAVA_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