如果将java_home和classpath设置为不同的java版本,会发生什么?

如果将java_home和classpath设置为不同的java版本,会发生什么?,java,classpath,Java,Classpath,例如,我有两个java版本:/usr/jdk8和/usr/jdk7 如果我将java_home设置为jdk8,但在jdk7中将classpath设置为lib,那么如果我只运行java-xx命令,哪个版本将被实际使用 我认为它将是jdk7,因为jdk7中的rt.jar将被加载 真正让我困惑的是java命令本身有什么信息,以及它在java程序运行的整个过程中做了什么,而我可以理解rt.jar中有很多java核心代码 搜索这个问题并不容易,因为我总是会得到“如何配置java_主页”之类的东西 我希望我

例如,我有两个java版本:/usr/jdk8和/usr/jdk7

如果我将java_home设置为jdk8,但在jdk7中将classpath设置为lib,那么如果我只运行java-xx命令,哪个版本将被实际使用

我认为它将是jdk7,因为jdk7中的rt.jar将被加载

真正让我困惑的是java命令本身有什么信息,以及它在java程序运行的整个过程中做了什么,而我可以理解rt.jar中有很多java核心代码

搜索这个问题并不容易,因为我总是会得到“如何配置java_主页”之类的东西

我希望我能清楚地描述我的困惑。如果有人能给我一些活生生的例子来帮助我理解,那就更好了


谢谢。

类路径不用于查找Java运行时库,因此将Java运行时JAR添加到类路径不会产生任何影响

请参阅Java文档:

它描述了组成Java平台的类,包括
rt.jar
中的类和其他几个重要的jar文件,是从“引导类路径”加载的,这与“用户类路径”不同

有关更多信息,请阅读更多信息,即,要了解更多信息,请阅读文档。这是有原因的

真正让我困惑的是java命令本身有什么信息,以及它在java程序运行的整个过程中做了什么

它拥有和需要的唯一信息是它自己的.exe位置

  • 它相应地设置自己的类路径
  • 它根本没有使用JAVA_HOME。只有IDE、Tomcat等可以这样做

为什么不亲自尝试一下,看看会发生什么?就Java而言,不需要设置这两个选项。“很难看出故意弄错的目的是什么,也很难看出为什么这个答案有任何实际用途。”Sweeper。当然,我会尝试一下,但我认为理解java命令并没有多大帮助。所以我提前问了这个问题,希望能得到一些好的建议,这将帮助我找到更好的测试用例来尝试。一年来,我一直在类路径上犯错误。第一颗子弹在技术上是正确的,但遗憾的是它不完整。默认情况下,
java
命令将“用户类路径”设置为当前目录,但如果给定,将使用指定的类路径,使用
-cp
命令行选项或
classpath
环境变量。