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

我刚接触Linux系统,似乎有太多的Java文件夹。

Java -version给我:

  • Java版本“1.7.0_55”
  • OpenJDK运行时环境(rhel-2.4.7.1。el6_5-x86_64 u55-b13)
  • OpenJDK 64位服务器虚拟机(build 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到底在哪里?

1216911 次浏览

您可以使用/etc/profile或类似/etc/profile.d/jdk_home.sh的文件

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

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

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

    如果以非特权用户登录,则前置sudo。sudo vim < / p >

  3. 按“i”进入插入模式
  4. < p >添加:

    export JAVA_HOME="path that you found"
    
    
    export PATH=$JAVA_HOME/bin:$PATH
    
  5. logout and login again, reboot, or use source /etc/profile to apply changes immediately in your current shell

做甲骨文所做的事情(作为前Sun员工,我不习惯这种做法)

ln -s latestJavaRelease /usr/java/default
Where latestJavaRelease是你想要使用的版本

export JAVA_HOME=/usr/java/default

对于所有用户,我建议在/etc/profile.d/java_home.sh中创建以下几行文件

# Set JDK installation directory according to selected Java compiler


export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")

这将动态更新,并与选择系统良好地工作。不过请注意,更新只会发生在新的登录shell中。

可能是一个好主意来源,无论你编辑保存必须使用新的登录。

< p >: 源/ etc / 或 . /etc/< / p >

你编辑过的资料在哪里。

我用这句话:

export JAVA_HOME=$(readlink -f $(dirname $(readlink -f $(which java) ))/../)

致我的~/。配置文件,因此它在登录时使用默认Java目录的基础。这是bash的。

复制您安装的bin文件路径

YOUR PATH

打开终端,输入以下命令编辑环境文件,

sudo nano /etc/environment

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

JAVA_HOME="YOUR_PATH"

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

source /etc/environment

现在通过执行以下命令来测试:

echo $JAVA_HOME

在Linux上,我在~/.profile中添加了这一行:

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

我在RHEL 7中没有其他答案是“坚持”的,甚至在/etc/profile~/.bash_profile中直接设置JAVA_HOMEPATH也不行。每次我试图检查是否设置了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/

当我们开始设置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

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

  2. 它会询问你的密码。在输入密码之后,它将打开bash文件。然后在结尾输入:

    export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/"
    export PATH=$PATH:$JAVA_HOME/bin
    
  3. 保存文件并退出

以上是单个用户的情况。对于所有用户,您必须执行以下步骤

  1. < p > gedit /etc/profile

  2. < p > export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/"

  3. < p > export PATH=$PATH:$JAVA_HOME/bin

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

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

测试方面:

echo $JAVA_HOME

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

  1. 不建议修改/etc/profile,原因如下(如/etc/profile中所述):
    除非你知道你在做什么,否则改变这个文件不是一个好主意。在中创建custom.sh shell脚本要好得多 /etc/profile.D /对您的环境进行自定义更改,如下所示 *
  1. 因此,如上所述,创建/etc/profile.d/custom.sh文件进行自定义更改。

  2. 现在,为了随时更新正在安装的新版本的Java,永远不要放置绝对路径,而是使用:

#如果将JDK作为Java home

export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")

#如果将jre作为Java的主页

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:/bin/java::")

  1. 并且记住在custom.sh文件中有< em > # !/bin/bash < / em >

作为回答,因为我没有评论的权利。

注意事项:遵循“That Dave Guy”发布的接受答案。

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

chmod -R 755 /usr/java

步骤1 -通过echo $JAVA_HOME检查当前java版本

步骤2 - vim /etc/profile

第三步-在文件的最后你会发现

. export JAVA_HOME,我们需要在这里提供新的路径,确保它不是相对的

步骤4—保存并退出:wq

步骤5 -“source /etc/profile/”,这将执行更改

第6步-再次执行echo $JAVA_HOME -更改将被反映。

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…(推荐)重启虚拟机/计算机。如果不想重新启动计算机,可以使用source /etc/source

4……使用快捷方式Ctlr + Alt + T打开终端

5……已验证的JAVA_HOME安装

echo $JAVA_HOME

一行从flob复制,归功于他们

顺便说一句,使用SDKMAN sdkman.io来切换。你的sdk。

它为您设置JAVA_HOME。

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

你可以在kafka文件夹中找到kafka-run-class.sh: 卡夫卡/ bin / kafka-run-class.sh

检查这些行

enter image description here

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

所有操作步骤(找到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"

在/etc/profile中,如果你打开这个文件,你会知道不建议在这个文件上写东西。与其这样做,不如把你的命令脚本(假设test.sh)放到/etc/profile.然后把test.sh放在那里。每次实例重新启动时,/etc/profile都会自动调用它

首先,你需要找出你的电脑上安装了哪个Java,要使用哪个。

 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

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

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

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

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

    export JAVA_HOME="path that you found"

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

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

如果不奏效,试试这个:

apt install openjdk-8-jdk-headless