Pro*_*mer 61 java linux directory
有没有我可以用来查找JAVA_HOME
目录的linux命令?我已经尝试打印出环境变量("env")但我找不到该目录.
jsd*_*vel 74
在Linux上你可以运行 $(dirname $(dirname $(readlink -f $(which javac))))
在Mac上你可以运行 $(dirname $(readlink $(which javac)))/java_home
我不确定窗户,但我where javac
想会让你非常接近
Ada*_*amC 54
echo $JAVA_HOME
如果已设置,将打印该值.但是,如果未在启动脚本中手动设置它,则可能未设置.
如果您尝试which java
并且找不到任何内容,则可能未在您的计算机上安装Java,或者至少不在您的路径中.根据您拥有的Linux发行版以及是否具有root访问权限,您可以访问http://www.java.com下载所需的版本.然后,您可以将JAVA_HOME设置为指向此目录.请记住,这只是一个约定,不应该用于确定是否安装了Java.
cev*_*ris 34
我知道这已经晚了,但是这个命令会搜索/ usr /目录来为你找到java
sudo find /usr/ -name *jdk
Run Code Online (Sandbox Code Playgroud)
结果来了
/usr/lib/jvm/java-6-openjdk
/usr/lib/jvm/java-1.6.0-openjdk
Run Code Online (Sandbox Code Playgroud)
仅供参考,如果您使用的是Mac,目前JAVA_HOME位于
/System/Library/Frameworks/JavaVM.framework/Home
Par*_*tra 31
只是另一种解决方案,这是一个跨平台(使用java
),并指向jre的位置.
java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home'
Run Code Online (Sandbox Code Playgroud)
输出所有java
的当前设置,并找到一个被调用的设置java.home
.
对于Windows,你可以使用findstr而不是grep.
java -XshowSettings:properties -version 2>&1 | findstr "java.home"
Run Code Online (Sandbox Code Playgroud)
Pau*_*lgo 10
要显示您使用的环境变量的值:
echo $ VARIABLE
所以在你的情况下将是:
echo $ JAVA_HOME
如果您没有设置它,您可以添加您的.bashrc
文件:
export JAVA_HOME = $(readlink -f/usr/bin/java | sed"s:bin/java ::")
它会在您更新包时动态更改.
如果$JAVA_HOME
在您的环境中定义...
$ echo $JAVA_HOME
$ # I am not lucky...
Run Code Online (Sandbox Code Playgroud)
你可以从加载的类中猜出来.
$ 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]
Run Code Online (Sandbox Code Playgroud)
此方法可确保在有多个安装的情况下找到正确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)
Run Code Online (Sandbox Code Playgroud)