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

2024-11-01 08:41:00
admin
原创
55
摘要:问题描述:我正在使用 Linux Mint Cinnamon 14。我已设置$JAVA_HOME和$PATH环境变量如下~/.profile:export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35 export PATH=/home/aqeel/dev...

问题描述:

我正在使用 Linux Mint Cinnamon 14。我已设置$JAVA_HOME$PATH环境变量如下~/.profile

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 版本时,它显示默认的(已安装的 open-jdk)Java 版本。如何使用我下载的版本覆盖默认的 open-jdk?

更新:

which java说/usr/bin/java

$JAVA_HOME/bin/java -version显示“权限被拒绝”

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

cd $JAVA_HOME/bin,和ls表明它是正确的目录。


解决方案 1:

虽然您的设置似乎正确,但仍有几件事需要检查:

  1. 的输出env-具体来说PATH

  2. command -v java告诉你什么?

  3. 是否有java可执行文件$JAVA_HOMEin并且是否设置了执行位?如果没有chmod a+x java

我相信您在添加/更改和之后已经source完成了?.profile`JAVA_HOME`PATH

另外,您可以通过以下方式帮助自己将来维护 JDK 安装:

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

然后,您只需要在设置 JDK 安装时更新一个环境变量。

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

干杯,

解决方案 2:

update-java-alternatives

java未找到您的可执行文件,JAVA_HOME它仅取决于您的PATH

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

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

就像 一样update-alternatives,它通过符号链接管理工作。优点是它可以同时管理指向所有 Java 实用程序的符号链接:、、javac等。java`javap`

我还没有看到它对JAVA_HOMEJDK 的影响。到目前为止,我只看到它用于第三方工具,例如 Maven。

解决方案 3:

如果您想使用从 Oracle 网站下载的 JDK,那么对我而言(使用 Mint)有效的方法是使用update-alternatives

  1. 我下载了 JDK 并将其解压到任何地方,例如/home/aqeel/development/jdk/jdk1.6.0_35

  2. 我跑了:

sudo update-alternatives --install /usr/bin/java java /home/aqeel/development/jdk/jdk1.6.0_35/bin/java 1

现在您可以执行sudo update-alternatives --config java选择您的 Java 版本

  1. 这并没有设置我想要配置的JAVA_HOME 变量,所以我只是将它添加到我的 ~/.bashrc 中,包括一个export JAVA_HOME="/home/aqeel/development/jdk/jdk1.6.0_35"语句

现在,我已经下载了两个 JDK(假设第二个已解压到/home/aqeel/development/jdk/jdk-10.0.1)。

我们如何根据当前使用的 Java 动态地改变 JAVA_HOME?

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

  1. 为了根据所选的 java 替代方案动态更改 JAVA_HOME,我将以下代码片段添加到 ~/.bashrc:

export JAVA_HOME=$(update-alternatives --query java | grep Value: | awk -F'Value: ' '{print $2}' | awk -F'/bin/java' '{print $1}')

最后(这超出了范围)如果您必须不断更改 Java 版本,您可能需要考虑:

  1. 向您的~./bash_aliases添加别名

alias change-java="sudo update-alternatives --config java"

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

解决方案 4:

$JAVA_HOME/bin/java -version 显示“权限被拒绝”

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

做一个

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

了解为什么您无法访问或运行该程序。

解决方案 5:

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

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

然后使用命令初始化用户配置文件:source ~/.bash_profile

并使用以下方法检查:[which java]

你会找到正确的那个。

解决方案 6:

尝试一下:

  • 导出JAVA_HOME=put_here_your_java_home_path

  • 类型 export PATH=$JAVA_HOME/bin:$PATH (确保 $JAVA_HOME 是 PATH 中的第一个元素)

  • 尝试 java -版本

原因:可能有其他 PATH 元素指向替代的 java home。如果您首先输入首选的 JAVA_HOME,系统将使用这个。

解决方案 7:

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

 $ sudo update-alternatives --display java

既然有了合适的候选版本可供更改,您可以通过运行以下命令在可用的 Java JRE 之间切换默认 Java 版本:

 $ sudo update-alternatives --config java

出现提示时,选择您想要使用的 Java 版本。1、2、3 等。

现在您可以验证默认 Java 版本是否发生了如下变化。

 $ java -version

解决方案 8:

有一个简单的方法,只需从“/usr/bin”中删除符号链接即可。这样就可以了。

解决方案 9:

有时更新~/.profile~/.bash_profile不起作用。我刚刚删除了 JDK 6 和sourced .bash_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

解决方案 10:

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

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用