当前位置: 首页 > 知识库问答 >
问题:

为什么不设置JAVA_HOME就可以使用javac&java?

傅玮
2023-03-14
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

我没有在我的~/.bash_profile中设置java_home,但是我可以使用javacjava

我的.bash_profile如下所示:

export EDITOR="vim"
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

export MAVEN_HOME="$HOME/opt/maven"
export PATH="$PATH:$MAVEN_HOME/bin"

如果我想安装其他版本的JDK,比如11、14、15.…,我该如何使用它呢?我需要设置java_home吗?

共有1个答案

岳亮
2023-03-14

java_home被广泛误解。

Java本身(即Javajavac和相关的可执行文件)实际上并不关心java_home

当执行它们时,它们知道要使用哪个JDK(与它们关联的JDK)。唯一相关的是,您的shell(或其他工具)首先查找可执行文件,并为此使用path。请注意,path是一个通用变量,现在基本上所有广泛使用的通用操作系统都使用它来查找可执行文件。它不是Java特有的东西。

export JAVA_HOME="/some/path/pointing/to/a/jdk"
export PATH="$JAVA_HOME/bin:$PATH"
 类似资料:
  • 我刚刚安装了Ubuntu desktop 12.04并通过以下方式安装了Java 6 JDK: 但是当我转到时,我没有看到一个名为的目录,所以我认为它根本不存在!?! 当我转到时,我看到: 我现在正试图将作为环境变量添加到中,以便从基于shell的Ant构建中访问它: ? ? 还有别的吗? 我所说的“”是指我在系统上安装的JDK6的顶级目录,无论它在哪里······

  • 问题内容: 我的Ubuntu 10.04 i386服务器(无头)上有一个名为Hello的Android项目。它包含Android项目文件夹应具有的所有内容。我首先使用以下synax在Project文件夹中的bash中构建项目: 然后我尝试像这样用ant构建.apk: 我收到此错误: 这让我很困惑,因为在我跑步之前,我跑步: 我知道这是有效的,因为在bash shell中返回: 为了解决这个问题,请

  • 我在Ubuntu中安装JDK有困难,我不能让它工作。谁能让我知道我做错了什么? 1-我从Oracle的网站下载了jdk-6u35-linux-i586.bin 2-我将下载的文件移到了家里/ 3-我使用chmod+x jdk-6u35-linux-i586.bin将其转换为可执行文件 4-我使用sudo./jdk1.6.0_35执行它 5-我使用mv jdk1.6.0_35//usr/local/

  • 问题内容: 因此,对于Toast类,显然可以这样编写: 为什么完全可以实例化toastMessage并将其用作没有new关键字的对象? 如何通过方法实例化toastMessage? 问题答案: 这里没有什么特别的。您只是在调用创建实例的静态方法(或者可以重用现有实例- 这是实现细节)。例如,这是您会在各处看到的一种模式。有时可以改为调用构造函数,有时 只能 通过静态方法创建实例。 除非幕后功夫,否

  • 问题内容: 许多使用Shell脚本配置其环境的Java应用程序都使用环境变量来启动Java的正确版本,找到JRE JAR,等等。 在OSX 10.6上,以下路径似乎对此变量有效 其中一些是到实际当前VM的符号链接(在Java Preference窗格中定义)。 但是应该使用哪一个?或者可以使用其中任何一个? 问题答案: 我只是设置JAVA_HOME为该命令的输出,该命令应该为你提供Java首选项中