为什么jdk的CLASSPATH环境变量需要设置rt.jar 和 tools.jar
How Classes are Found?中有說(shuō)明:(java啟動(dòng)類(lèi)文件在 rt.jar中, 而 工具類(lèi)文件在 tools.jar 中)?
How the Java Launcher Finds Classes
The Java launcher,?java, initiates the Java virtual machine. The virtual machine searches for and loads classes in this order:
- Bootstrap classes?- Classes that comprise the Java platform, including the classes in?rt.jar?and several other important jar files.
- Extension classes?- Classes that use the Java Extension mechanism. These are bundled as?.jar?files located in the extensions directory.
- User classes?- Classes defined by developers and third parties that do not take advantage of the extension mechanism. You identify the location of these classes using the?-classpath?option on the command line (the preferred method) or by using the CLASSPATH environment variable. (See?Setting the Classpath?for?Windows?or?Unix.)
In effect, these three search paths are joined to form a simple class path. This is similar to the "flat" class path previously used, but the current model has some important differences:
- It is relatively difficult to accidentally "hide" or omit the bootstrap classes.
- In general, you only have to specify the location of user classes. Bootstrap classes and extension classes are found "automatically".
- The tools classes are now in a separate archive(tools.jar)and can only be used if included in the user class path (to be explained shortly).
How the Java Launcher Finds Bootstrap Classes
Bootstrap classes are the classes that implement the Java 2 Platform. Bootstrap classes are in the?rt.jar?and several other jar files in the?jre/lib?directory. These archives are specified by the value of the bootstrap class path which is stored in the?sun.boot.class.path?system property. This system property is for reference only, and should not be directly modified.
It is very unlikely that you will need to redefine the bootstrap class path. The nonstandard option,?-Xbootclasspath, allows you to do so in those rare cicrcumstances in which it is necessary to use a different set of core classes.
Note that the classes which implement the Java 2 SDK tools are in a separate archive from the bootstrap classes.The tools archive is the SDK's/lib/tools.jar?file.The development tools add this archive to the user class path when invoking the launcher. However, this augmented user class path is only used to execute the tool. The tools that process source code,?javac?and?javadoc, use the original class path, not the augmented version. (For more information, see?How Javac and Javadoc Find Classes, below.)
How the Java Launcher Finds User Classes (java啟動(dòng)器如何找到用戶(hù)類(lèi))
User classes are classes which build on the Java platform. To find user classes, the launcher refers to the?user class path?-- a list of directories, JAR archives, and ZIP archives which contain class files.
A class file has a subpath name that reflects the class's fully-qualified name. For example, if the class?com.mypackage.MyClass?is stored under?/myclasses, then?/myclasses?must be in the user class path and the full path to the class file must be /myclasses/com/mypackage/MyClass.class. If the class is stored in an archive named?myclasses.jar, then?myclasses.jar?must be in the user class path, and the class file must be stored in the archive ascom/mypackage/MyClass.class.
The user class path is specified as a string, with a colon (:) separating the class path entries on Solaris, and a semi-colon (;) separating entries on Microsoft Windows systems. The?java?launcher puts the user class path string in the?java.class.path?system property. The possible sources of this value are:
- The default value, ".", meaning that user class files are all the class files in the current directory (or under it, if in a package).
- The value of the?CLASSPATH?environment variable, which overrides the default value.
- The value of the?-cp?or?-classpath?command line option, which overrides both the default value and the?CLASSPATH?value.
- The JAR archive specified by the?-jar?option, which overrides all other values. If this option is used, all user classes must come from the specified archive.
總結(jié)
以上是生活随笔為你收集整理的为什么jdk的CLASSPATH环境变量需要设置rt.jar 和 tools.jar的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 移动宽带家庭网关设置(移动宽带家庭网关设
- 下一篇: mac电脑怎么上外网访问(mac如何访问