【问题标题】:IntelliJ - why does the terminal has different environment variables valuesIntelliJ - 为什么终端有不同的环境变量值
【发布时间】:2014-12-18 21:07:39
【问题描述】:

我最近将 Java 7 替换为 Java 8。
IntelliJ 中的所有常规应用程序都可以顺利运行。
除了 tomcat 应用程序之外的所有应用程序 - 从 cmd 命令行运行但不是从 IntelliJ 运行。

由于 JRE_HOME 定义中的错误而无法加载。
我已经在 env 变量和 jdk 设置中明确定义了 JRE_HOME。
我已经执行了

echo %jre_home%

在 IntelliJ 终端和 cmd 中都收到不同的值
(IntelliJ 终端显示未更新的值。)。
终端中的变量在哪里声明?
如何更改它们?

【问题讨论】:

    标签: java intellij-idea environment-variables java-8


    【解决方案1】:

    使系统缓存无效应该可以解决问题。见JetBrains: Invalidate Cache

    任何其他措施(如关闭项目和 IDE 似乎仅在每个项目的基础上才有效,并且仅在一段时间后(当 IDE 检测到缓存本身无效时......)


    编辑:
    更正 - 不幸的是,在对所有终端中的环境进行了一段时间的更正之后,IntelliJ“恢复”到我的任何项目中的旧的、不正确的环境。现在我希望在重新启动后 - 正如 akuman8 所发布的 - 问题得到解决。 (如果没有,我将坚持使用我选择的命令外壳在 IDE 之外,一切正常......)

    【讨论】:

      【解决方案2】:

      对我来说,这是因为 IntelliJ IDEA 没有将 shell 作为“登录”shell 启动。我的所有环境变量都按照我在登录 shell 中的预期设置,但在非登录 shell 中,其中许多都丢失了。

      例如,我希望 /usr/local/bin 在我的 PATH 中,但这仅在登录 shell 中是正确的(正如我在运行 iTerm2 时得到的那样)。这是 IntelliJ IDEA 中终端会话的摘录:

      amacleod@valjean ~> echo $PATH | grep -c /usr/local/bin
      0
      (1) amacleod@valjean ~> $SHELL --login
      Welcome to fish, the friendly interactive shell
      amacleod@valjean ~> echo $PATH | grep -c /usr/local/bin
      1
      

      一种可能的解决方法是将我预期的 PATH 和其他变量添加到非登录 shell 的 shell 配置中,但我真的宁愿总是在登录 shell 中。

      我希望 IntelliJ IDEA 在终端设置中有一个用于发送--login 的复选框。但是,可以覆盖 Shell 路径 设置以包含登录标志。

      【讨论】:

        【解决方案3】:
        1. 关闭所有 IntellJ 窗口和任何当前可能使用错误 SDK 的进程。
        2. 导航到安装 JDK 的文件夹(例如 C:\Program Files\Java)。
        3. 将错误的 SDK 重命名为其他名称(例如 jdk-11.0.5.OLD)。如果它不这样做,您可能仍然有一个使用该 SDK 运行的进程;回到 1。
        4. 再次启动 IntelliJ。

        【讨论】:

          【解决方案4】:

          如果您通过 JetBrains ToolBox 启动 IntelliJ,它将缓存 $PATH 变量,因此不会显示最近的更改。

          只需关闭并重新打开 JetBrains Toolbox

          【讨论】:

            【解决方案5】:

            我不知道旧的 IntelliJ 版本,但是在 2019.2.3 中可以在项目设置中配置环境变量。请注意,您需要重新启动现有终端或创建新的终端选项卡才能看到效果。

            【讨论】:

            • 谢谢,你为我节省了一些时间。
            【解决方案6】:

            大约 5 年后,我在 Windows 10 上遇到了同样的问题,不得不重新启动计算机来解决它。

            编辑: 最好的解决方案是不定义 JRE_HOME 环境变量。我不知道为什么,但 IntelliJ 坚持使用那个 env 变量。

            【讨论】:

            • 对我来说也一样。我可以确认在 Windows 10 上我必须重新启动机器。重启 IntelliJ IDEA 没有效果...
            • 当通过 oracle 安装程序等单独安装 java/jre 时,会将 JRE_HOME/jre 设置到 PATH 中。
            【解决方案7】:

            AFAIKT,Linux 上的 intellij 终端与运行独立终端会话相同。它位于 IDE 中,非常方便。

            针对这个问题,“如何更改[终端环境变量]?”

            我正在使用 virtualenvwrapper 来管理不同环境的终端环境变量,例如开发、测试和生产。它适用于 java 开发和 python 开发一样好。

            https://virtualenvwrapper.readthedocs.org

            【讨论】:

              【解决方案8】:

              看来你可以定义项目特定的环境变量:

              您可以在 IntelliJ 项目特定的环境变量下设置 运行/调试配置 --> 默认值 --> 应用程序 --> 环境 变量

              来自: http://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/#comment-617922540

              【讨论】:

              • 谢谢。但是旧的 JRE_Home 是从哪里来的呢?我想删除它的引用。
              • 据我所知,IJ使用操作系统的默认shell(对于windows cmd.exe,您可以指定要使用的可执行文件。因此env变量应该与您执行时相同cmd.exe(或其他平台上适用的可执行文件)自己
              • 谢谢。在我的环境中绝对不是这种情况。顺便说一句,它在 tomcat 调试配置中。不是应用程序。
              • 只是为了说明控件在哪里。当然,您必须选择自己的运行/调试配置。 “删除它的引用”是什么意思?
              • @mish 你把这搞混了。这些变量用于快速启动应用程序/运行任务等的特定配置。它们不反映终端中显示的内容。
              猜你喜欢
              • 1970-01-01
              • 2021-09-18
              • 1970-01-01
              • 1970-01-01
              • 2021-05-12
              • 1970-01-01
              • 2014-11-13
              • 2019-02-08
              • 1970-01-01
              相关资源
              最近更新 更多