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

时间:2017-05-17 05:59:02

标签: java classpath

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

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

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

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

搜索问题并不容易,因为我总是会得到#34;如何配置java_home"有点事。

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

请参阅Java文档:How Classes are Found

它描述了构成Java平台的类,包括rt.jar中的类和其他几个重要的jar文件,都是从“bootstrap classpath”加载的,这与“user classpath”不同。

有关详细信息,请参阅JDK Tools and Utilities上的详细信息,即了解详情,请阅读文档。这是有原因的。

答案 1 :(得分:0)

  

让我感到困惑的是java命令本身具有哪些信息,以及在java程序运行时它在整个过程中的作用

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

  • 相应地设置自己的CLASSPATH
  • 根本没有使用JAVA_HOME。只有IDE,Tomcat等才能做到这一点。