【问题标题】:java version in JAVA_HOME and PATH are mismatchJAVA_HOME 和 PATH 中的 java 版本不匹配
【发布时间】:2016-09-07 10:42:43
【问题描述】:

我有 02 个问题:

1 - 我尝试在我的 Ubuntu 14.04 中运行 Eclipse neon,但出现此错误

我认为这个问题与 java 版本有关(Eclipse neon 需要 java 8)??

2 - 所以,我检查了我的 java 版本,拿走我得到的东西

java-版本

霓虹vi /etc/profile.d/java.sh

这是我的问题,我设置 java_home = java 8 但在 PATH 中它仍然是 java 7 !!!,你怎么看?我想要 java -version = java 8

谢谢

【问题讨论】:

  • /opt/java/jdk1.8.0_20 真的存在吗?
  • 是 ➜ ~ cd /opt/java/jdk1.8.0_20 ➜ jdk1.8.0_20

标签: java eclipse ubuntu java-home eclipse-neon


【解决方案1】:

似乎在您的 Path 变量中,对 Java 1.7 的引用是在 Java 1.8 之前给出的。 当您运行 java -version 时,它会在 Path 变量中搜索 bin 目录,一旦获得引用,它就会返回版本。尝试从您的 Path 变量中删除 /opt/java/jdk1.7.0_21/bin ,我相信它会在此之后工作。 希望这个回答对你有帮助

【讨论】:

  • 我的路径变量不包含 java 1.7 这是它:PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin :/bin:/usr/games:/usr/local/games"
  • 但是有一个脚本可以更改路径以添加 java 1.7,例如我的 java_home 以添加 a.8,但我不明白
  • 我可以在最后一张图片中看到,你在哪里做了“echo $PATH”。路径给定 /opt/java/jdk1.7.0_21
  • echo $PATH 在运行所有更改它的脚本后为您提供生成的路径,但起初它的值在 /etc/environment =
【解决方案2】:

似乎 java.sh 会做你想做的事:设置 JAVA_HOME- 和 PATH-environment-variables。 当你启动java时,你确定它已经启动了吗?您是否手动启动它并测试它是否有效?

【讨论】:

  • 这是我的 pbm,我设置 java_home = java 8 但在 PATH 中它是 java 7 !!!
  • 要么你没有执行脚本: export PATH=$JAVA_HOME/bin:$PATH 从那时起你的 PATH 变量应该至少有 jdk7 和 jdk8 路径(因为你的PATH 中已经包含 jdk7-path,如果您自己不这样做,它不会被截断)或者您没有正确设置 JAVA_HOME。尝试手动设置 PATH:获取当前 PATH,删除 JDK7-Path 并手动添加 JDK8-Path。
  • @zebiridjallil 您运行的脚本可能会在脚本执行期间覆盖JAVA_HOME。
  • @TimBiegeleisen,我想知道这个脚本在哪里?覆盖我的
【解决方案3】:

当您运行脚本时,我猜 export cmd 只会更改该 shell 中的 PATH,您可能正在从另一个 shell 运行 eclipe。还要检查 eclipse.ini 文件的 eclipse 版本。

【讨论】:

    【解决方案4】:

    嗯,这里有很多事情要记住。

    首先是...无论您使用什么 java_home,它仍然会首先查看您的路径!您的路径使用的是 java7!您应该从路径中删除硬编码的 java,而在路径中使用 JAVA_HOME/bin。也许您在修改环境变量时切换了用户? 另外不要忘记在导出 PATH 之前导出 JAVA_HOME!

    第二...你可能有一个系统全局java,但想用其他一些jre运行eclipse。检查 eclipse.ini 中的 -vm 设置(通常在 /etc/eclipse.ini 中)

    在你的 eclipse.ini 中添加这个顶部

    -vm
    /opt/java/jdk1.8.0_20/bin/java
    

    From askubuntu(关于为什么 PATH 更新不起作用)

    有几个地方可以定义$PATH:

    /etc/environment 是一个纯文本文件(不是脚本),它会影响所有 用户 ~/.pam_environment - 相同但用户特定的 bash 也 执行一些可用于修改$PATH的脚本:

    ~/.profile 用于登录 shell 会话(不要问我什么 这意味着:)

    ~/.bashrc 对非登录交互 shell 执行 会话

    /etc/profile 和 /etc/bash.bashrc 是系统范围的 ~/.profile 和 ~/.bashrc 的替代品

    我在某处读到 /etc/environment 是定义$PATH 的推荐位置。所以我 通常使用它。但是您的路径可能已在其中一个中修改 地方。

    顺便说一句,当您使用sudo 执行命令时,我认为它通常使用 root 用户的 $PATH(而不是非特权用户的 $PATH 帐户)。所以,~/.pam_environment,~/.profile 和 ~/.bashrc 在/root 目录也可能起作用。

    【讨论】:

    • 我的路径不包含 Java 硬编码值,/etc/environment =
    • 阅读这篇关于 PATH 和用户细节的文章。askubuntu.com/questions/409111/…
    • 我的 Eclipse 正在运行,之后我添加了 -vm /opt/java/jdk1.8.0_20/bin/java 现在可以了,但是我已经在 PATH/JAVA_HOME 中遇到了版本 msimatch 问题
    • 我认为你在设置为 java 8 时忘记导出 JAVA_HOME,!!见我的粗体字,“也别忘了在导出 PATH 之前导出 JAVA_HOME!”
    猜你喜欢
    • 2012-12-16
    • 2015-10-24
    • 2018-12-07
    • 2012-06-22
    • 2015-11-08
    • 2022-08-16
    • 2018-07-12
    • 2014-12-20
    • 1970-01-01
    相关资源
    最近更新 更多