如何在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位服务器虚拟机(内置24.51-b03,混合模式)
当我尝试构buildMaven项目时,出现错误:
Error: JAVA_HOME is not defined correctly. We cannot execute /usr/java/jdk1.7.0_05/bin/java
你可以告诉我哪些文件,我需要修改为根以及非根用户和Java位于何处?
-
find /usr/lib/jvm/java-1.xx-openjdk
-
vim /etc/profile
-
加:
export JAVA_HOME="path that you found" export PATH=$JAVA_HOME/bin:$PATH
- 重新打开shell或使用
source /etc/profile
立即应用更改
对于所有用户,我build议将以下行放在/etc/profile
export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
这将dynamic更新,并与备选系统一起使用。 请注意,更新只会在新的loginshell中进行。
您可以使用/ etc / profile或更好的文件,如/etc/profile.d/jdk_home.sh
export JAVA_HOME=/usr/java/jdk1.7.0_05/
你必须记住,这个文件只加载了新的loginshell。所以在bash -l或新的gnome-session之后,它不会随着新的Java版本而改变。
在RHEL 7中,其他的答案都没有“坚持”,即使直接在/etc/profile
设置JAVA_HOME
和PATH
,或者~/.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/
做Oracle做什么(作为一个前Sun员工,我不习惯那个)
ln -s latestJavaRelease / usr / java / default
在哪里最新的Java释放是你想要使用的版本
然后导出JAVA_HOME = / usr / java / default
在Linux中设置path非常简单。 做如下:
步骤1打开terminal并键入sudo gedit .bashrc
第二步它会问你你的密码。 input密码后,会打开bash文件。 然后结束并在下面input
第3步
export JAVA_HOME= /usr/lib/jvm/java-8-openjdk-amd64/ export PATH="$PATH:$JAVA_HOME/bin"
步骤4然后保存文件并退出文件
以上是针对单个用户的。 对于所有用户,您必须遵循以下步骤
Step-1 gedit /etc/profile
第二步 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
Step-3 export PATH=$PATH:$JAVA_HOME/bin
希望这可以帮助。 谢谢!
复制你安装的bin文件path
“你的path”
打开terminal并通过input以下命令编辑环境文件,
“sudo nano / etc / environment”
在此文件中,添加以下行(将刚刚复制的pathreplace为YOUR_PATH):
JAVA_HOME = “YOUR_PATH”
这应该足以设置环境variables。 现在重新加载这个文件:
“source / etc / environment”
现在执行以下命令来testing
echo $ JAVA_HOME
在Linux上,我把这一行添加到我的〜/ .profile中:
export JAVA_HOME=$(readlink -ze /usr/bin/javac | xargs -0 dirname -z | xargs -0 dirname)
当我们要设置JAVA_HOME时,让我分享一下设置JAVA_HOME或其他任何环境variables的好处:
1)在不影响应用程序启动和configuration文件(指向JAVA_HOME)的情况下升级JDK很容易。 你只需要下载新的版本,并确保你的JAVA_HOME指向新版本的Java。 这是使用环境variables或链接的最大好处。
2)JAVA_HOMEvariables简洁而不是JDK安装目录的完整path。
3)JAVA_HOMEvariables是平台独立的,即如果你的启动脚本使用JAVA_HOME,那么它可以在Windows和UNIX上运行而不需要任何修改,你只需要在各自的操作系统上设置JAVA_HOME即可。
阅读更多信息: http : //javarevisited.blogspot.com/2012/02/how-to-set-javahome-environment-in.html#ixzz4BWmaYIjH
这是一个非常简单的脚本来解决这个问题
export JAVA_HOME_BIN=`which java` export JAVA_HOME_DIR=`dirname $JAVA_HOME_BIN` export JAVA_HOME=`dirname $JAVA_HOME_DIR`
并进行testing:
echo $JAVA_HOME
答案是以前的post是有效的。 但是关于以下方面,没有一个答案是完整的:
- 不推荐更改/ etc / profile,仅仅是因为(如/ etc / profile中所述):
- 除非你知道你在做什么,否则改变这个文件并不是一个好主意。 最好在/etc/profile.d/中创build一个custom.sh shell脚本,以便对环境进行自定义更改,因为这样可以防止在将来的更新中进行合并。
-
所以如上所述,创build/etc/profile.d/custom.sh文件的自定义更改。
-
现在,为了随时更新正在安装的新版Java,绝对不要使用绝对path,而应该使用:
#如果Java作为Java家庭
export JAVA_HOME = $(readlink -f / usr / bin / javac | sed“s:/ bin / javac ::”)
要么
#如果使Java作为Java家庭
export JAVA_HOME = $(readlink -f / usr / bin / java | sed“s:/ bin / java ::”)
- 并记得有#! / bin / bash在custom.sh文件中
作为答复发表,因为我没有评论的特权。
注意 :遵循“That Dave Guy”发布的答案。
在设置variables之后,请确保将相应的权限设置为安装它的java目录。
chmod -R 755 /usr/java
可能是一个好主意来源,无论你编辑的configuration文件,以保存使用新的login。
源:/ etc /或。 /等等/
无论你编辑的个人资料在哪里。
我使用该行:
export JAVA_HOME=$(readlink -f $(dirname $(readlink -f $(which java) ))/../)
到我的〜/ .profile,所以它在login时使用默认的java目录的基础。 这是为了bash。