我是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的确切位置?
答案 0 :(得分:259)
find /usr/lib/jvm/java-1.x.x-openjdk
vim /etc/profile
如果以非特权用户身份登录,则前置sudo,即。 sudo vim
添加:
export JAVA_HOME="path that you found"
export PATH=$JAVA_HOME/bin:$PATH
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_HOME
或PATH
设置/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)
答案是先前的帖子是有效的。但是没有一个答案是完整的:
- 除非您知道自己在做什么,否则更改此文件并不是一个好主意。在中创建custom.sh shell脚本要好得多 /etc/profile.d/对您的环境进行自定义更改,就像这样 将防止在将来的更新中合并。*
如上所述,创建/etc/profile.d/custom.sh文件以进行自定义更改。
现在,要始终保持更新所安装的较新版本的Java,请不要使用绝对路径,而是使用:
#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;)
答案 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
检查这些行
在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 文本编辑器。
找到/usr/lib/jvm/java-1.x.x-openjdk
如果以非特权身份登录,请输入“gedit /etc/profile”或使用“sudo gedit /etc/profile”
在行尾添加以下内容:
export JAVA_HOME="你找到的路径"
导出路径=$JAVA_HOME/bin:$PATH
在当前 shell 中输入“source /etc/profile”以应用更改