如何为 Java 设置 JAVA_HOME?

Gau*_*wal 352 java

我已经安装了一个 Java 版本。我们如何$JAVA_HOME正确设置环境变量?

Man*_*tha 491

您可以将您JAVA_HOME/etc/profile彼得罗妮拉Escarabajo建议。但是JAVA_HOME或 任何系统变量的首选位置是/etc/environment.

/etc/environment在任何文本编辑器中打开,如nanogedit并添加以下行:

JAVA_HOME="/usr/lib/jvm/open-jdk"
Run Code Online (Sandbox Code Playgroud)

(java路径可能不同)

使用source加载变量,运行以下命令:

source /etc/environment
Run Code Online (Sandbox Code Playgroud)

然后通过运行以下命令检查变量:

echo $JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

更新

通常大多数 linux 系统都默认为 /etc/environment 源。如果您的系统没有这样做,请将以下行添加到~/.bashrc(谢谢@pje)

source /etc/environment
Run Code Online (Sandbox Code Playgroud)

  • 正如其他人指出的那样,这不会在终端会话之间坚持。我为解决这个问题所做的只是将“source /etc/environment”行添加到我的 bash 配置文件“~/.bashrc”的顶部,以便它在启动时加载我的所有环境设置。到目前为止为我工作。 (7认同)
  • 对于那些做软件开发的人,不要把你的JAVA_HOME放在/etc/environment,除非你每次切换JDK版本都想重启。 (5认同)
  • 正如其他人指出的那样,这是一个临时解决方案。没有人会希望每次重新启动 bash 时都运行源代码。 (3认同)
  • 当我尝试运行 Android Studio(以 IntelliJ IDEA 作为基础)时,我收到一条与 @advocate 非常相似的错误消息:“'tools.jar' 似乎不在 Android Studio 类路径中。” 在对 JAVA_HOME 摆弄了很多没有成功之后,我决定看一下 studio.sh,启动 Android Studio 的 shellscript。作为一个疯狂的猜测,我将 JDK_HOME 设置为 JAVA_HOME 预期的相同值,瞧!它安装没有大问题。 (2认同)
  • @sedulam 我更新了答案 (2认同)

Pet*_*ajo 82

要设置JAVA_HOME环境变量,请执行以下操作:

  1. 按键盘上的Ctrl+ Alt+启动终端T
  2. 输入以下命令:
    $gksudo gedit /etc/environment
  3. 根据您安装 Java 的位置,您需要提供完整路径。对于本示例,我在/usr/lib/jvm/java-7-oracle目录中安装了 Oracle JDK 7 。
    滚动到文件末尾并输入以下内容:
    JAVA_HOME=/usr/lib/jvm/java-7-oracle
    export JAVA_HOME
  4. 保存您的文件并退出gedit
  5. 最后,使用以下命令重新加载系统路径:
    $. /etc/environment

上述方法将使您免于每次登录计算机时都必须运行命令的麻烦。

  • 如何 。/etc/environment 工作吗? (5认同)
  • @adeen-s 你在`/etc/environment` 的一行中添加了`export`,它有帮助吗?该文件包含解析为以 `=` 分隔的名称-值对的变量定义;其内容不作为命令执行。(请参阅 [`man pam_env`](http://manpages.ubuntu.com/manpages/xenial/en/man8/pam_env.8.html)。)所以除非你 *单独* 对待文件,好像它是一个脚本(例如通过将`/etc/environment` 传递给bash 的`.`/`source` 内置),我不希望它起作用。 (4认同)

Err*_*rro 46

如果您不知道路径并且只安装了 openJDK,则可以键入 update-alternatives --config java,您应该找到路径。要设置变量,您可以编写JAVA_HOME=<PATH>后跟export JAVA_HOME. 请注意,声明变量时没有空格。要检查变量是否已存储,您只需键入echo $JAVA_HOME以进行验证。

  • 由您手动更改它。再一次,你是它变得动态的方式...... (3认同)
  • 当我更无知时,我写下了这个答案。如上所述设置变量只会影响您当前的终端会话,不会被持久化。正确的方法是运行`update-alternatives --install &lt;link&gt; &lt;name&gt; &lt;target&gt; &lt;priority&gt;` 例如: `update-alternatives --install /usr/bin/java java /usr/lib/jvm/默认运行时/bin/java 1` (3认同)