CLASSPATH环境变量作用

CLASSPATH环境变量作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们,JVM就是通过CLASSPTH来寻找类的。
举例说明:目录D:\Tomcat 9.0\webapps\mytest编写一个类JarTest
CLASSPATH环境变量作用

对JarTest进行编译,会报如下错误
D:\Tomcat 9.0\webapps\mytest>javac JarTest.java
JarTest.java:3: 错误: 程序包javax.servlet不存在
import javax.servlet.*;
^
JarTest.java:4: 错误: 找不到符号
public class JarTest extends HttpServlet {
^
符号: 类 HttpServlet
JarTest.java:6: 错误: 找不到符号
public void doGet(HttpServletRequest request,
^
符号: 类 HttpServletRequest
位置: 类 JarTest
JarTest.java:7: 错误: 找不到符号
HttpServletResponse response)
^
符号: 类 HttpServletResponse
位置: 类 JarTest
JarTest.java:8: 错误: 找不到符号
throws IOException, ServletException
^
符号: 类 ServletException
位置: 类 JarTest
JarTest.java:24: 错误: 找不到符号
public void init(ServletConfig servletconfig) throws ServletException {
^
符号: 类 ServletConfig
位置: 类 JarTest
JarTest.java:24: 错误: 找不到符号
public void init(ServletConfig servletconfig) throws ServletException {
^
符号: 类 ServletException
位置: 类 JarTest
JarTest.java:5: 错误: 方法不会覆盖或实现超类型的方法
@Override
^
JarTest.java:25: 错误: 找不到符号
super.init(servletconfig);
^
符号: 变量 super
位置: 类 JarTest
9 个错误

因为编译这个类,JVM需要用到servlet-api.jar这个jar包里的类,而JVM找不到它,所以会报错,我们把这个jar包配置在CLASSPATH环境变量中,这样JVM就可以找到。(注意更改过环境变量,要重启CMD命令窗口,CLASSPATH环境变量中 .;表示当前路径,把它放在最前面,表示优先在当前路径搜索需要的类,如果不写,系统会默认在所有CLASSPATH路径搜索后都没找到需要的类,再在当前路径搜索)
CLASSPATH环境变量作用
再次用cmd命令对JarTest进行编译
CLASSPATH环境变量作用
编译成功,在目录D:\Tomcat 9.0\webapps\mytest下出现JarTest.class文件
CLASSPATH环境变量作用
再举个例子
在目录D:\Tomcat 9.0\webapps\mytest\b下编写一个类A
public class A {
public A() {
}
public static void main(String[] args) {
System.out.println(“阶乘:a”);
System.out.println(args.length);
}
}
并把它变成成类文件A.class
要调用这个类文件,只能在其所在目录下
CLASSPATH环境变量作用
而配置了环境变量后,可以在任意位置调用A.class
CLASSPATH环境变量作用
CLASSPATH环境变量作用