【发布时间】:2009-01-19 21:39:57
【问题描述】:
这听起来像是一个愚蠢的问题。 Sun 的核心类文件在哪里,例如 Button.class,位于 JDK 安装文件夹 C:\Program Files\Java\jdk1.5.0_12 中?
或者类文件是否驻留在C:\Program Files\Java\jre1.5.0_12 文件夹中?
【问题讨论】:
这听起来像是一个愚蠢的问题。 Sun 的核心类文件在哪里,例如 Button.class,位于 JDK 安装文件夹 C:\Program Files\Java\jdk1.5.0_12 中?
或者类文件是否驻留在C:\Program Files\Java\jre1.5.0_12 文件夹中?
【问题讨论】:
它们分布在几个罐子之间。不过看起来 Button 在 jre/lib/rt.jar 中。
【讨论】:
类文件实际上以 jar 文件的形式存在于所使用的 Java 发行版中。大多数文件都在 rt.jar(运行时)中。
大多数开发人员机器实际上都安装了两种形式的 Java。 JDK(您在开发时经常使用并包含编译器),以及下载的基于 Java 的应用程序使用的 JRE,通常是您的 Web 浏览器。这些通常是两个相互不了解的独立发行版。因此,不幸的是,您的问题的答案是“取决于您正在运行的是什么”。更糟糕的是,JDK 可能包含它自己的 JRE 副本...
这就是所谓的类路径地狱的来源之一,因为当你运行一个java程序时,并不总是清楚你在使用什么。
如果您从命令行运行 java,您有时可以检测到正在使用的确切版本。
如果您使用 Eclipse,您可以选择您正在使用的 JDK 版本。
【讨论】:
两者兼而有之。
它们是两个不同的 JVM 安装。一种用于编译(JDK代表Java Development Kit) 另一个是大多数客户机器拥有的java环境(JRE代表Java Runtime Environment)
在这两个中的任何一个上查找一个名为:
rt.jar
平台的核心所在。
【讨论】:
您可以通过反射检查自己是否有任何课程。
例如,我在哪里可以找到位于类路径中的 String 类? 简单
URL url = String.class.getResource("String.class");
System.out.println(url);
【讨论】:
实际上包含在JRE中。虽然 JDK 有她的 JRE 副本,所以我们可能会说 JDK 和 JRE,但实际上 java inbuild 类包含在 JRE 中。
【讨论】: