- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
JAVA_HOME环境变量实际上是什么?我很怀疑。设置它是做什么的?我还有另一个问题,如果我们的操作系统中有两个或多个 JDK,我们可以设置一个版本的路径来设置 $JAVA_HOME 变量,而另一个版本作为机器中运行的 java,如“java -version”所示正如我在ubuntu中所想的那样,java --version命令给出了JRE配置的(运行java)java版本,而JAVA_HOME变量定义了用于编译java程序的版本。我对么?这两个输出引用的jdks实际上有什么区别-
1. echo $JAVA_HOME
2. java -version
最佳答案
让我们从这两个命令的作用开始。
echo $JAVA_HOME
这会输出JAVA_HOME
环境变量的值。按照约定,此环境变量设置(通常在 shell“rc”文件中)为 JRE 或 JDK 安装的基目录。然而,Oracle 或 OpenJDK 核心 java 工具都不依赖于此。您设置 JAVA_HOME
是为了第 3 方工具的利益,告诉他们要使用系统上可能安装的许多 JRE 或 JDK 中的哪一个。
因此,运行echo $JAVA_HOME
通常会给出a JRE或JDK的目录。但它可能未设置...或指向丢失的目录。
java -version
这将运行java
命令并告诉它输出它自己的版本信息。与前面的不同,如果您的 shell 可以找到(真实的)java
命令,那么它输出的信息就是确定的。
但是java
命令来自哪个JRE/JDK呢?
这由 shell 以及它(通常)如何查找命令决定。对于所有主流 Unix/Linux/BSD shell,这是由 PATH 环境变量控制的。 PATH变量定义命令搜索路径;即 shell 查找命令的目录列表。
因此,如果 PATH
为 /usr/bin:/bin:/usr/local/bin:/home/joeuser/bin:/usr/java/jre-x.y.z/bin
然后 shell 将依次在每个目录中查找 java
。。它找到的第一个 java 命令将被执行。您可以通过运行此命令找出它是哪一个。
which java
但这还不是结束,因为如果您在典型的 Linux 系统上使用 OpenJDK Java 安装,则 /usr/bin
中的 java
命令是实际上是由alternatives 命令管理的符号链接(symbolic link)链中的第一个。实际的可执行文件位于链的另一端。
(替代系统是一种为命令或命令集实现可切换系统范围默认值的方法。请阅读手册条目以获取更多详细信息。但请注意,Oracle Java 安装程序(或 RPM) )对于 Linux,不要“理解”Linux 替代系统...我的烦恼之一!)
最后,在 shell“rc”文件中经常会看到类似的内容:
export JAVA_HOME=/path/to/jre # (or jdk)
export PATH=/bin:$JAVA_HOME/bin:/usr/bin:...
这并没有什么神奇之处。 $JAVA_HOME
将在设置环境变量之前由 shell 扩展。实际的 PATH
值将是:
/bin:/path/to/jre/bin:/usr/bin:...
<小时/>
总结一下:
echo $JAVA_HOME
告诉您典型的第 3 方工具默认会尝试使用的 JRE 或 JDK。
java -version
告诉您 java
命令来自 JRE 或 JDK。
它们可能不同。
关于java - JAVA_HOME环境变量和 "java -version"的输出有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25375950/
平时很少在jquery中用到this。查看代码时发现用到了,就调试出this的值,心想原来如此。还是挺有用的。这里总结一下this与$(this)的区别和使用。 $(this)生成的是什么?
使用单例类和应用程序范围的托管 bean 来保存应用程序数据有区别吗? 我需要查找某些 JNDI 资源,例如远程 bean 接口(interface),因此我为自己编写了一个单例来缓存我的引用并且只允
如果您仔细查看包含的图片,您会注意到您可以使用 Eclipse IDE 重构 Groovy 代码并将方法转换为闭包,反之亦然。那么,闭包到底是什么,它与方法有什么不同呢?有人可以举一个使用闭包的好例子
vagrant box repackage有什么区别( docs ) 和 vagrant package ( docs )? 我意识到 vagrant package仅适用于 VirtualBox 提
我想看看是否有人可以解释为什么以下代码适用于 valueOf 但不适用于其他代码。 import java.math.BigDecimal; public class Change { publ
这个问题已经有答案了: 已关闭12 年前。 Possible Duplicates: What is Closures/Lambda in PHP or Javascript in layman te
This question already has answers here: Vagrant, Docker, Puppet, Chef (3个答案) 2年前关闭。 docker和chef有什么共同
以下代码在95%的机器上产生相同的输出,但是在几台机器上却有所不同。在 Debug模式下,输出: Changing from New to Fin OK 但在 Release模式下: Changing
////Creating Object var Obj; // init Object Obj= {}; 它们之间有什么区别两个? 有没有可能把它变成一个单行? 这样使用有什么好处吗?
我想找出定时器服务之间的区别。我应该使用哪个以及何时使用。我正在使用 Jboss 应用服务器。 1) java.ejb.Schedule。 @Schedule注解或配置自xml。 2) javax.e
我发现在 C++ 中可以通过三种不同的方式将对象传递给函数。假设我的类(class)是这样的: class Test { int i; public: Test(int x);
有什么区别。 public class Test { public static void main(String args[]) { String toBeCast = "c
如果我有一列,设置为主索引,设置为INT。 如果我不将其设置为自动递增,而只是将唯一的随机整数插入其中,与自动递增相比,这是否会减慢 future 的查询速度? 如果我在主索引和唯一索引为 INT 的
这两种日期格式有什么区别。第一个给出实际时间,第二个给出时间购买添加时区偏移值。 NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]
如果有一个函数,请说foo: function foo() { console.log('bar'); } 那么在 JavaScript 中,从另一个函数调用一个函数有什么区别,如下所示: f
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
代码是什么: class Time { private: int hours; int minutes; int seconds; pu
我知道这是非常基本的,但有人介意解释一下这两个数组声明之间的区别吗: #include array myints; ...和: int myints[5]; ...以及为什么 myints.size
我学会了如何根据 http://reference.sitepoint.com/css/specificity 计算 css 特异性但是,基于this reference,我不明白伪类(来自c)和伪元
为什么在运行 2) 时会出现额外的空行?对我来说 1 就像 2。那么为什么 2) 中的额外行? 1) export p1=$(cd $(dirname $0) && pwd) #
我是一名优秀的程序员,十分优秀!