如何在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位于何处?

  1. find /usr/lib/jvm/java-1.xx-openjdk
  2. vim /etc/profile
  3. 加:

     export JAVA_HOME="path that you found" export PATH=$JAVA_HOME/bin:$PATH 
  4. 重新打开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_HOMEPATH ,或者~/.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是有效的。 但是关于以下方面,没有一个答案是完整的:

  1. 不推荐更改/ etc / profile,仅仅是因为(如/ etc / profile中所述):
  • 除非你知道你在做什么,否则改变这个文件并不是一个好主意。 最好在/etc/profile.d/中创build一个custom.sh shell脚本,以便对环境进行自定义更改,因为这样可以防止在将来的更新中进行合并。
  1. 所以如上所述,创build/etc/profile.d/custom.sh文件的自定义更改。

  2. 现在,为了随时更新正在安装的新版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 ::”)

  1. 并记得有#! / 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。