我刚接触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到底在哪里?


当前回答

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

不建议修改/etc/profile,原因如下(如/etc/profile中所述):

修改这个文件不是一个好主意,除非你知道你在做什么。在中创建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::")

记住要有#!打开custom.sh文件中的/bin/bash

其他回答

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

不建议修改/etc/profile,原因如下(如/etc/profile中所述):

修改这个文件不是一个好主意,除非你知道你在做什么。在中创建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::")

记住要有#!打开custom.sh文件中的/bin/bash

打开终端,输入sudo gedit .bashrc 它会询问你的密码。在输入密码之后,它将打开bash文件。然后在结尾输入: 出口JAVA_HOME = " / usr / lib / jvm / java-8-openjdk-amd64 /” 导出路径= $路径:$ JAVA_HOME / bin 然后保存文件并退出

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

gedit / etc /资料 出口JAVA_HOME = " / usr / lib / jvm java-8-openjdk-amd64 /” 出口PATH = $ PATH: JAVA_HOME / bin美元

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

找到/usr/lib/jvm/java - 1. - x.x openjdk 输入“gedit /etc/profile”,如果以非特权身份登录,则使用“sudo gedit /etc/profile” 在行末添加以下内容: export JAVA_HOME="你找到的路径" 导出路径= $ JAVA_HOME / bin: $路径 在当前shell中输入“source /etc/profile”以应用更改

所有操作步骤(找到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 / 或 . / etc /

你编辑过的资料在哪里。