如何在Linux中为所有用户设置JAVA_HOME

时间:2014-07-08 21:01:14

标签: java linux java-home path-variables

我是Linux系统的新手,似乎有太多的Java文件夹。

java -version给了我:

  • java版本" 1.7.0_55"
  • OpenJDK运行时环境(rhel-2.4.7.1.el6_5-x86_64 u55-b13)
  • OpenJDK 64位服务器VM(内置24.51-b03,混合模式)

当我尝试构建Maven项目时,我收到错误:

Error: JAVA_HOME is not defined correctly.
We cannot execute /usr/java/jdk1.7.0_05/bin/java

您能否告诉我需要为root用户和非root用户修改哪些文件以及java的确切位置?

22 个答案:

答案 0 :(得分:259)

  1. find /usr/lib/jvm/java-1.x.x-openjdk
  2. vim /etc/profile

    如果以非特权用户身份登录,则前置sudo,即。 sudo vim

  3. 按' i'进入插入模式
  4. 添加:

    export JAVA_HOME="path that you found"
    
    export PATH=$JAVA_HOME/bin:$PATH
    
  5. 注销并重新登录,重新启动或使用source /etc/profile立即在当前shell中应用更改

答案 1 :(得分:82)

对于所有用户,我建议在/etc/profile

中添加以下行
export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")

这将动态更新,并与替代系统配合良好。请注意,更新只会在新的登录shell中进行。

答案 2 :(得分:30)

您可以使用/ etc / profile或更好的文件,例如/etc/profile.d/jdk_home.sh

export JAVA_HOME=/usr/java/jdk1.7.0_05/

你必须记住,这个文件只加载了新的登录shell。所以在bash -l或新的gnome-session之后,它不会随着新的Java版本而改变。

答案 3 :(得分:24)

在RHEL 7中,其他任何答案都没有“坚持”,即使直接在JAVA_HOMEPATH设置/etc/profile~/.bash_profile也行不通。每当我尝试检查JAVA_HOME是否已设置时,它都会显示为空白:

$ echo $JAVA_HOME
    (<-- no output)

我要做的是在/etc/profile.d/jdk_home.sh中设置脚本

#!/bin/sh
export JAVA_HOME=/opt/ibm/java-x86_64-60/
export PATH=$JAVA_HOME/bin:$PATH

我最初忽略了第一行(#!/bin/sh),没有它就行不通。

现在它正在运作:

$ echo $JAVA_HOME
/opt/ibm/java-x86_64-60/

答案 4 :(得分:8)

在Linux中设置路径非常容易。请执行以下操作:

第1步 打开终端并输入sudo gedit .bashrc

第2步 它会询问您的密码。输入密码后,将打开bash文件。然后转到结尾并在下面输入

第3步

      export JAVA_HOME= /usr/lib/jvm/java-8-openjdk-amd64/

      export  PATH="$PATH:$JAVA_HOME/bin"

步骤4 然后保存文件并退出文件

以上是针对单个用户的。对于所有用户,您必须按照以下步骤

第1步 gedit /etc/profile

第2步 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

第3步 export PATH=$PATH:$JAVA_HOME/bin

希望这会有所帮助。谢谢!

答案 5 :(得分:5)

答案是先前的帖子是有效的。但是没有一个答案是完整的:

  1. 建议不要更改/ etc / profile,原因很简单(如/ etc / profile中所述):
  2.   
        
    • 除非您知道自己在做什么,否则更改此文件并不是一个好主意。在中创建custom.sh shell脚本要好得多   /etc/profile.d/对您的环境进行自定义更改,就像这样   将防止在将来的更新中合并。*
    •   
    1. 如上所述,创建/etc/profile.d/custom.sh文件以进行自定义更改。

    2. 现在,要始终保持更新所安装的较新版本的Java,请不要使用绝对路径,而是使用:

    3.   

      #f将jdk作为java home

           

      导出JAVA_HOME = $(readlink -f / usr / bin / javac | sed&#34; s:/ bin / javac ::&#34;)

           

      OR

           

      #f使jre成为java home

           

      export JAVA_HOME = $(readlink -f / usr / bin / java | sed&#34; s:/ bin / java ::&#34;)

      1. 记得 #! custom.sh文件上的/ bin / bash

答案 6 :(得分:5)

做Oracle做的事情(作为以前的Sun员工我不能习惯那个)

ln -s latestJavaRelease / usr / java / default
其中latestJavaRelease是您要使用的版本

然后导出JAVA_HOME = / usr / java / default

答案 7 :(得分:3)

复制您安装的bin文件路径

“你的路径”

通过输入以下命令

打开终端并编辑环境文件

“sudo nano / etc / environment”

在此文件中,添加以下行(用刚复制的路径替换YOUR_PATH):

JAVA_HOME = “YOUR_PATH”

这应该足以设置环境变量。现在重新加载这个文件:

“source / etc / environment”

现在通过执行:

来测试它

echo $ JAVA_HOME

答案 8 :(得分:3)

所有操作步骤(查找java,父目录,编辑文件等)一种解决方案

zFileProfile="/etc/profile"
zJavaHomePath=$(readlink -ze $(which java) | xargs -0 dirname | xargs -0 dirname)
echo $zJavaHomePath

echo "export JAVA_HOME=\"${zJavaHomePath}\"" >> $zFileProfile
echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> $zFileProfile

结果:

# tail -2 $zFileProfile
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-11.0.7.10-1.el8_1.x86_64"
export PATH=$PATH:$JAVA_HOME/bin

说明:

1)让我们把完整的命令分成几部分

$(readlink -ze $(which java) | xargs -0 dirname | xargs -0 dirname)

2)从Java命令中找到Java路径

# $(which java)
"/usr/bin/java"

3)从符号路径获取相对路径

# readlink -ze /usr/bin/java
"/usr/lib/jvm/java-11-openjdk-11.0.7.10-1.el8_1.x86_64/bin/java"

4)获取/usr/lib/jvm/java-11-openjdk-11.0.7.10-1.el8_1.x86_64/bin/java的父路径

# readlink -ze /usr/bin/java | xargs -0 dirname
"/usr/lib/jvm/java-11-openjdk-11.0.7.10-1.el8_1.x86_64/bin"

5)获取/usr/lib/jvm/java-11-openjdk-11.0.7.10-1.el8_1.x86_64/bin/

的父路径
# readlink -ze /usr/bin/java | xargs -0 dirname | xargs -0 dirname
"/usr/lib/jvm/java-11-openjdk-11.0.7.10-1.el8_1.x86_64"

答案 9 :(得分:2)

在Linux上我将此行添加到我的〜/ .profile:

export JAVA_HOME=$(readlink -ze /usr/bin/javac | xargs -0 dirname -z | xargs -0 dirname)

答案 10 :(得分:2)

在/ etc / profile中,如果您打开该窗口,则会了解不建议您在该文件上写入信息。而是将命令脚本(假设test.sh)转到/etc/profile.d文件夹,然后将test.sh放在此处。每次您实例重新启动时,/ etc / profile都会自动调用它。

答案 11 :(得分:1)

虽然我们要设置JAVA_HOME,但是让我分享设置JAVA_HOME或任何其他环境变量的一些好处:

1)在不影响指向JAVA_HOME的应用程序启动和配置文件的情况下升级JDK很容易。您只需要下载新版本并确保您的JAVA_HOME指向新版本的Java。这是使用环境变量或链接的最佳好处。

2)JAVA_HOME变量简洁而简洁,而不是JDK安装目录的完整路径。

3)JAVA_HOME变量是平台独立性,即如果您的启动脚本使用JAVA_HOME,那么它可以在Windows和UNIX上运行而无需任何修改,您只需要在各自的操作系统上设置JAVA_HOME。

了解详情:http://javarevisited.blogspot.com/2012/02/how-to-set-javahome-environment-in.html#ixzz4BWmaYIjH

答案 12 :(得分:1)

发布回答,因为我没有权利发表评论。

注意事项:按照&#34; Dave Guy&#34;发布的接受答案。

设置变量后,请确保为安装它的java目录设置适当的权限。

chmod -R 755 /usr/java

答案 13 :(得分:1)

使用SDKMAN sdkman.io来切换btw。您的sdk。

它为您设置JAVA_HOME。

答案 14 :(得分:1)

使用sudo打开 kafka-run-class.sh 来写

您可以在您的kafka文件夹中找到 kafka-run-class.sh kafka / bin / kafka-run-class.sh

检查这些行

enter image description here

在else部分中修改JAVA变量,使其指向您的java / bin中的java可执行文件。像 JAVA =“ $ JAVA_HOME / java”

答案 15 :(得分:1)

首先,您需要找出您的 PC 中安装了哪种 Java 以及要使用的 Java。 对于具有 root 权限的打开终端。

 sudo su

 ls /usr/lib/jvm/

现在它会列出可用的java版本。 选择列出的版本。

复制路径到那里。

现在打开 bashrc

  nano ~/.bashrc

在最后添加以下命令

 export JAVA_HOME="path that you copied"

  export PATH=$JAVA_HOME/bin:$PATH

然后保存文件并按 Ctrl+S 和 Ctrl+X 退出

现在运行以下命令:

  source ~/.bashrc

答案 16 :(得分:0)

使用您编辑的任何配置文件可能是一个好主意,以节省必须使用新登录。

或者: 来源/ etc / 要么 。的/ etc /

您编辑的任何个人资料在哪里。

答案 17 :(得分:0)

这是一个解决问题的非常简单的脚本

export JAVA_HOME_BIN=`which java`
export JAVA_HOME_DIR=`dirname $JAVA_HOME_BIN`
export JAVA_HOME=`dirname $JAVA_HOME_DIR`

进行测试:

echo $JAVA_HOME

答案 18 :(得分:0)

步骤1-通过“ echo $ JAVA_HOME”检查当前的Java版本

第2步-vim / etc / profile

第3步-在文件末尾,您会发现 导出JAVA_HOME,我们需要在此处提供新路径,确保它不是相对路径。

第4步-保存并退出:wq

第5步-“源/ etc / profile /”,将执行更改

步骤6-再次执行$ JAVA_HOME回显-更改将得到反映。

答案 19 :(得分:0)

只需将此命令添加到您的dockerfile

RUN echo "JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")" | tee -a /etc/profile && source /etc/profile && echo $JAVA_HOME

答案 20 :(得分:0)

1 ...使用快捷键Ctlr + Alt + T打开终端

2 ...执行以下命令:

echo export JAVA_HOME='$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")' | sudo tee /etc/profile.d/jdk_home.sh > /dev/null

3 ...(推荐)重新启动您的VM /计算机。如果不想重启计算机,可以使用source /etc/source

4 ...使用快捷键Ctlr + Alt + T打开终端

5 ...已通过

验证了JAVA_HOME分期付款
echo $JAVA_HOME

副本中的单线副本,归功于它们

答案 21 :(得分:0)

对于新用户来说,使用 vim 可能有点困难。我们可以改用 gedit 文本编辑器。

  1. 找到/usr/lib/jvm/java-1.x.x-openjdk

  2. 如果以非特权身份登录,请输入“gedit /etc/profile”或使用“sudo gedit /etc/profile”

  3. 在行尾添加以下内容:

    export JAVA_HOME="你找到的路径"

    导出路径=$JAVA_HOME/bin:$PATH

  4. 在当前 shell 中输入“source /etc/profile”以应用更改