Linux中的JAVA_HOME目录

时间:2009-07-13 01:21:47

标签: java linux directory

我可以使用任何linux命令查找JAVA_HOME目录吗?我已经尝试打印出环境变量(“env”)但我找不到该目录。

10 个答案:

答案 0 :(得分:71)

在Linux上,您可以运行$(dirname $(dirname $(readlink -f $(which javac))))

在Mac上,您可以运行$(dirname $(readlink $(which javac)))/java_home

我不确定Windows,但我想where javac会让你非常接近

答案 1 :(得分:53)

如果已设置,

echo $JAVA_HOME将打印该值。但是,如果您未在启动脚本中手动设置它,则可能未设置它。

如果您尝试which java并且找不到任何内容,则可能未在您的计算机上安装Java,或者至少不在您的路径中。根据您拥有的Linux发行版以及是否具有root访问权限,您可以转到http://www.java.com下载所需的版本。然后,您可以将JAVA_HOME设置为指向此目录。请记住,这只是一个约定,不应该用于确定是否安装了java。

答案 2 :(得分:34)

我知道这已经晚了,但是这个命令搜索/ usr /目录以找到你的

sudo find /usr/ -name *jdk

结果

/usr/lib/jvm/java-6-openjdk
/usr/lib/jvm/java-1.6.0-openjdk

仅供参考,如果您使用的是Mac,目前JAVA_HOME位于

/System/Library/Frameworks/JavaVM.framework/Home

答案 3 :(得分:26)

只是另一个解决方案,这个跨平台(使用java),并指向jre的位置。

java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home'

输出所有java的当前设置,并找到名为java.home的设置。

对于Windows,你可以使用findstr而不是grep。

java -XshowSettings:properties -version 2>&1 | findstr "java.home"

答案 4 :(得分:9)

显示您使用的环境变量的值:

  

echo $ VARIABLE

所以在你的情况下将是:

  

echo $ JAVA_HOME

如果您没有设置,可以添加.bashrc文件:

  

export JAVA_HOME = $(readlink -f / usr / bin / java | sed“s:bin / java ::”)

,当您更新软件包时,它会动态更改。

答案 5 :(得分:8)

如果您的环境中定义了$JAVA_HOME ...

$ echo $JAVA_HOME
$ # I am not lucky...

你可以从加载的类中猜出来。

$ java -showversion -verbose 2>&1 | head -1
[Opened /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/lib/rt.jar]

此方法可确保您找到在多次安装时使用的正确jdk / jre

或使用strace

$ strace -e open java -showversion 2>&1 | grep -m1 /jre/
open("/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/bin/../lib/amd64/jli/tls/x86_64/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)

答案 6 :(得分:2)

在终端上,输入:

echo“$ JAVA_HOME”

如果您没有得到任何内容,那么您的环境变量JAVA_HOME尚未设置。您可以尝试使用“locate java”来尝试发现Java的安装位置。

答案 7 :(得分:2)

您是否设置了JAVA_HOME

  • Korn和bash shell:export JAVA_HOME = jdk-install-dir
  • Bourne shell:JAVA_HOME = jdk-install-dir; export JAVA_HOME
  • C shell:setenv JAVA_HOME jdk-install-dir

答案 8 :(得分:1)

这是一个改进,只抓住stdout的目录:

java -XshowSettings:properties -version 2>&1 \
   | sed '/^[[:space:]]*java\.home/!d;s/^[[:space:]]*java\.home[[:space:]]*=[[:space:]]*//'

答案 9 :(得分:-1)

http://www.gnu.org/software/sed/manual/html_node/Print-bash-environment.html#Print-bash-environment

如果您真的想获得有关您的BASH的一些信息,请将该脚本放入您的.bashrc并观看它。你可以滚动并查看它。