path与classpath
1.path与classpath
1.1 作用简介
安装完JDK(Java Development Kit,Java开发套件)之后,可以在安装目录下找到两个子目录(bin目录和lib目录)。bin目录中包含着Java编译器等可执行文件。
PATH 环境变量是由分号(;)分隔的一系列目录。Windows 在 PATH 目录中按照从左到右的顺序查找程序。对于路径中的 JDK,一次应该只有一个 bin 目录(第一个目录后面的目录将被忽略) ,因此如果已经存在一个 bin 目录,则可以更新该特定条目。
下面是 PATH 环境变量的一个示例:
1 |
|
如果不设置 PATH 变量,则需要在每次运行可执行文件时指定它的完整路径。
1 |
|
如果想方便地从任何目录运行可执行文件(javac.exe,java.exe,javadoc.exe,等等) ,可以设置 PATH 环境变量,而不必键入命令的完整路径。
将%JAVA_HOME%/bin/
,添加到环境变量PATH中。再执行java命令时(无论在哪个目录下执行),系统就会从左到右搜索(这里的顺序很重要,可以利用这个特性覆盖掉某个旧版本的jdk),环境变量PATH中执行的目录,直到找到对应的可执行文件并执行(找到之后,后面的目录都会被忽略掉)。如果找不到,提示该命令不存在。因此配置了PATH变量后,可以直接用:
1 |
|
而不必键入命令的完整路径。
2.classpath
和PATH变量不同,CLASSPATH环境变量的作用是指定Java类所在的目录,告诉应用程序(包括 JDK 工具)在哪里查找用户类的一种方法。简单的来说:Classpath 是一个环境变量,应用程序 ClassLoader 或系统使用它来定位和加载存储在 .class 文件中的已编译 Java 字节码。
3.总结
PATH 和 CLASSPATH 之间的主要区别在于 PATH 是一个环境变量,用于定位 JDK 二进制文件,例如用于运行 java 程序和编译 java 源文件的“java”或“javac”命令。
对于CLASSPATH ,系统或应用程序类加载器使用环境变量 CLASSPATH 来定位和加载存储在 .class 文件中的编译 Java 字节码。java.lang.NoClassDefFoundError 和java.lang.ClassNotFoundException等错误的最常见原因是 Java 中的 CLASSPATH 不正确或配置错误。
其实在上面我们使用的命令:
1 |
|
实际上是在运行 :
1 |
|
javac就是对上述命令的封装。
在JDK1.5以后,classpath并不是必须配置了,在JDK1.5之前,是没有办法在当前目录下加载类的(找不到 JDK目录下lib文件夹中的.jar文件),所以我们需要通过配置classpath,但JDK1.5之后,JRE能自动搜索目录下类文件,并且加载dt.jar和tool.jar的类。所以JDK1.5以后,我们只需要配置Java_Home以及path即可!
4.Read more
:lollipop::https://stackoverflow.com/questions/33062443/what-is-the-difference-between-path-and-classpath-in-java
:lollipop::https://docs.oracle.com/javase/tutorial/essential/environment/paths.html
博客说明
文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,不用于任何的商业用途。如有侵权,请联系本人删除。谢谢!