我刚接触Linux系统,似乎有太多的Java文件夹。
Java -version给我:
当我试图构建一个Maven项目时,我得到了错误:
Error: JAVA_HOME is not defined correctly. We cannot execute /usr/java/jdk1.7.0_05/bin/java
请问root用户和非root用户需要修改哪些文件,java到底在哪里?
您可以使用/etc/profile或类似/etc/profile.d/jdk_home.sh的文件
export JAVA_HOME=/usr/java/jdk1.7.0_05/
你必须记住,这个文件只加载了新的登录shell ..所以在bash -l或一个新的gnome-session之后,它不会随着新的Java版本而改变。
find /usr/lib/jvm/java-1.x.x-openjdk
vim /etc/profile
如果以非特权用户登录,则前置sudo。sudo vim < / p >
sudo vim
export JAVA_HOME="path that you found" export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
做甲骨文所做的事情(作为前Sun员工,我不习惯这种做法)
ln -s latestJavaRelease /usr/java/default Where latestJavaRelease是你想要使用的版本
export JAVA_HOME=/usr/java/default
对于所有用户,我建议在/etc/profile.d/java_home.sh中创建以下几行文件
/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中。
可能是一个好主意来源,无论你编辑保存必须使用新的登录。
你编辑过的资料在哪里。
我用这句话:
export JAVA_HOME=$(readlink -f $(dirname $(readlink -f $(which java) ))/../)
致我的~/。配置文件,因此它在登录时使用默认Java目录的基础。这是bash的。
复制您安装的bin文件路径
YOUR PATH
打开终端,输入以下命令编辑环境文件,
sudo nano /etc/environment
在此文件中,添加以下行(将YOUR_PATH替换为刚才复制的路径):
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_HOME和PATH也不行。每次我试图检查是否设置了JAVA_HOME,它都会出现空白:
/etc/profile
~/.bash_profile
JAVA_HOME
PATH
$ echo $JAVA_HOME (<-- no output)
我要做的是在/etc/profile.d/jdk_home.sh中建立一个脚本:
/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),没有它它就不能工作。
#!/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
打开终端并输入sudo gedit .bashrc
sudo gedit .bashrc
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/" export PATH=$PATH:$JAVA_HOME/bin
保存文件并退出
以上是单个用户的情况。对于所有用户,您必须执行以下步骤
gedit /etc/profile
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/"
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`
测试方面:
答案是之前的帖子是有效的。但没有一个答案是完整的:
除非你知道你在做什么,否则改变这个文件不是一个好主意。在中创建custom.sh shell脚本要好得多 /etc/profile.D /对您的环境进行自定义更改,如下所示 *
因此,如上所述,创建/etc/profile.d/custom.sh文件进行自定义更改。
现在,为了随时更新正在安装的新版本的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::")
#如果将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::")
作为回答,因为我没有评论的权利。
注意事项:遵循“That Dave Guy”发布的接受答案。
在设置变量之后,请确保对安装它的java目录设置了适当的权限。
chmod -R 755 /usr/java
步骤1 -通过echo $JAVA_HOME检查当前java版本
步骤2 - vim /etc/profile
第三步-在文件的最后你会发现
步骤4—保存并退出:wq
步骤5 -“source /etc/profile/”,这将执行更改
第6步-再次执行echo $JAVA_HOME -更改将被反映。
1……使用快捷方式Ctlr + Alt + T打开终端
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
source /etc/source
4……使用快捷方式Ctlr + Alt + T打开终端
5……已验证的JAVA_HOME安装
一行从flob复制,归功于他们
顺便说一句,使用SDKMAN sdkman.io来切换。你的sdk。
它为您设置JAVA_HOME。
用sudo打开kafka-run-class.sh来写
你可以在kafka文件夹中找到kafka-run-class.sh: 卡夫卡/ bin / kafka-run-class.sh
检查这些行
修改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的父路径
/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/的父路径
/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都会自动调用它
sudo su ls /usr/lib/jvm/
复制路径直到这里。
现在打开bashrc
nano ~/.bashrc
在末尾添加以下命令
export JAVA_HOME="path that you copied" export PATH=$JAVA_HOME/bin:$PATH
保存文件,然后按Ctrl+S和Ctrl+X退出
现在运行下面的命令:
source ~/.bashrc
对于新用户来说,使用vim可能有点困难。我们可以使用gedit文本编辑器代替。
输入“gedit /etc/profile"或者使用“sudo gedit /etc/profile"如果以非特权身份登录
在行末添加以下内容:
export JAVA_HOME="path that you found"
导出路径= $ JAVA_HOME / bin: $路径
输入source /etc/profile;在当前shell中应用更改
如果不奏效,试试这个:
apt install openjdk-8-jdk-headless