Linux 中的 JAVA_HOME 目录

2024-11-12 08:36:00
admin
原创
228
摘要:问题描述:是否有任何 Linux 命令可用于查找JAVA_HOME目录?我尝试打印出环境变量(“env”),但找不到目录。解决方案 1:在 Linux 上你可以运行$(dirname $(dirname $(readlink -f $(which javac))))在 Mac 上你可以运行$(dirname ...

问题描述:

是否有任何 Linux 命令可用于查找JAVA_HOME目录?我尝试打印出环境变量(“env”),但找不到目录。


解决方案 1:

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

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

我不确定窗户是否合适,但我想where javac应该很接近

解决方案 2:

只是另一个解决方案,这个是跨平台的(使用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"

解决方案 3:

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

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

解决方案 4:

我知道这已经晚了,但是这个命令会搜索 /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

解决方案 5:

要显示环境变量的值,请使用:

回显 $VARIABLE

因此你的情况是:

回显 $JAVA_HOME

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

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

当你更新软件包时它将动态地改变。

解决方案 6:

如果$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)

解决方案 7:

在终端上输入:

回显“$JAVA_HOME”

如果您没有得到任何结果,则表示您的环境变量 JAVA_HOME 尚未设置。您可以尝试使用“locate java”来尝试查找 Java 的安装位置。

解决方案 8:

您可以通过执行此命令从命令行进行检查echo $JAVA_HOME。如果安装了 Java 但未设置路径,则需要确定 Java 安装的路径。我更喜欢使用sudo update-alternatives --config java列出所有已安装版本并标记当前活动版本并提供切换对话框的命令:

有3个程序提供‘java’。

  选择命令
-----------------------------------------------------------
   1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.14.0.9-2.fc35.x86_64/bin/java)
   2 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-1.fc35.x86_64/bin/java)
*+ 3 /usr/java/jdk-17.0.2/bin/java

按 Enter 保留当前选择[+],或输入选择编号:

从上面的列表中,您可以选择要作为默认的 Java 版本。JAVA_HOME例如,要将设置为选项 3,您可以这样做export JAVA_HOME=/usr/java/jdk-17.0.2

解决方案 9:

您是否设置了 JAVA_HOME

  • Korn 和 bash shell:export JAVA_HOME=jdk-install-dir

  • Bourne shell:JAVA_HOME=jdk-install-dir;导出JAVA_HOME

  • C shell:setenv JAVA_HOME jdk-安装目录

解决方案 10:

这是一个改进,只抓取目录到标准输出:

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

解决方案 11:

export JAVA_HOME=$(realpath $(which java) | sed 's//bin/.*//')

解释:

  • realpath获取解析符号链接的绝对路径

  • sed 's//bin/.*//'删除/bin路径上的所有内容

等价地:

export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")

(来源: https: //stackoverflow.com/a/29622512/2314737)

(假设已安装 Java)

解决方案 12:

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

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

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1109  
  IPD(Integrated Product Development,集成产品开发)流程是一种广泛应用于高科技和制造业的产品开发方法论。它通过跨职能团队的紧密协作,将产品开发周期缩短,同时提高产品质量和市场成功率。在IPD流程中,CDCP(Concept Decision Checkpoint,概念决策检查点)是一个关...
IPD培训课程   73  
  研发IPD(集成产品开发)流程作为一种系统化的产品开发方法,已经在许多行业中得到广泛应用。它不仅能够提升产品开发的效率和质量,还能够通过优化流程和资源分配,显著提高客户满意度。客户满意度是企业长期成功的关键因素之一,而IPD流程通过其独特的结构和机制,能够确保产品从概念到市场交付的每个环节都围绕客户需求展开。本文将深入...
IPD流程   63  
  IPD(Integrated Product Development,集成产品开发)流程是一种以跨职能团队协作为核心的产品开发方法,旨在通过优化资源分配、提高沟通效率以及减少返工,从而缩短项目周期并提升产品质量。随着企业对产品上市速度的要求越来越高,IPD流程的应用价值愈发凸显。通过整合产品开发过程中的各个环节,IPD...
IPD项目管理咨询   71  
  跨部门沟通是企业运营中不可或缺的一环,尤其在复杂的产品开发过程中,不同部门之间的协作效率直接影响项目的成败。集成产品开发(IPD)作为一种系统化的项目管理方法,旨在通过优化流程和增强团队协作来提升产品开发的效率和质量。然而,跨部门沟通的复杂性往往成为IPD实施中的一大挑战。部门之间的目标差异、信息不对称以及沟通渠道不畅...
IPD是什么意思   66  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用