有什么我可以用来查找JAVA_HOME
目录的linux命令吗?我尝试打印出环境变量(“ env”),但是找不到目录。
Answers:
echo $JAVA_HOME
如果已设置,将打印该值。但是,如果您没有在启动脚本中手动设置它,则可能未设置。
如果您尝试which java
了却找不到任何东西,则Java可能未安装在您的计算机上,或者至少不在您的路径中。根据您拥有的Linux发行版以及是否具有root用户访问权限,可以访问http://www.java.com下载所需的版本。然后,您可以将JAVA_HOME设置为指向该目录。请记住,这只是一个约定,不应该用于确定是否已安装Java。
在Linux上,您可以运行 $(dirname $(dirname $(readlink -f $(which javac))))
在Mac上,您可以运行 $(dirname $(readlink $(which javac)))/java_home
我不确定Windows,但我想where javac
会很近的
$(dirname $(dirname $(readlink -f $(which javac))))
在Linux上使用
-f
为linux命令添加了标志。请注意,readlink
mac上的GNU
版本不是该版本,因此我排除-f
了该脚本的mac版本。通过brew安装了GNU
版本的Mac用户readlink
可以使用-f
。
另一个解决方案,这个人的跨平台(使用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"
jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
。在这两种情况下,对于“跨平台”方面,建议都在前面加上/usr/bin/env
。
我知道这很晚,但是此命令搜索/ usr /目录以找到适合您的java
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
sudo find /usr/ -name *jdk*
我的做法/usr/lib/jvm/java-7-openjdk-amd64/
。
要显示环境变量的值,请使用:
回声$ VARIABLE
因此您的情况将是:
回声$ JAVA_HOME
如果您没有设置它,可以添加.bashrc
文件:
导出JAVA_HOME = $(readlink -f / usr / bin / java | sed“ s:bin / java ::”)
当您更新软件包时,它会动态变化。
/usr/bin/java-8/bin/java
怎么办?您将得到输出/usr/-8/bin/java
。
如果$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)
在终端上,键入:
回声“ $ JAVA_HOME”
如果您什么都没得到,那么您的环境变量JAVA_HOME尚未设置。您可以尝试使用“ locate java”来尝试发现Java安装所在的位置。
您是否设置了JAVA_HOME
这是一项改进,仅抓取标准输出目录:
java -XshowSettings:properties -version 2>&1 \
| sed '/^[[:space:]]*java\.home/!d;s/^[[:space:]]*java\.home[[:space:]]*=[[:space:]]*//'
: ${JAVA_HOME:=$(/usr/bin/env java -XshowSettings:properties -version 2>&1 | grep "java.home" | cut -d"=" -f2)}
export $(/usr/bin/env java -XshowSettings:properties -version 2>&1 | grep "java.home" | sed -e 's/java.home/JAVA_HOME/;s/ //g;')
http://www.gnu.org/software/sed/manual/html_node/Print-bash-environment.html#Print-bash-environment
如果您真的想获取有关BASH的一些信息,请将该脚本放入.bashrc中,然后观察它的运行情况。您可以滚动查看。