课时8:CLASSPATH环境属性

简介: 课时8介绍了CLASSPATH环境属性,它是Java程序解释时类加载路径的关键配置。默认情况下,JVM从当前目录加载类文件,但通过设置`SET CLASSPATH=d:\mldnjava`,可以在不同目录中执行特定字节码文件。若CLASSPATH未正确配置,如在C盘根目录下执行,会报`ClassNotFoundException`错误。此外,PATH定义可执行程序路径,而CLASSPATH专为Java类加载服务。最佳实践是将CLASSPATH设为全局属性,并确保包含当前目录“.”。

课时8:CLASSPATH环境属性

 

image.png

我们来看一下 CLASSPATH 环境属性,这是一个重要的话题。CLASSPATH 如果要完整的进行解释需要好多的知识。所以本次只是对 CLASSPATH 的概念做出一个先期的介绍。


例如,现在假设在d:\mldnjava 目录下提供有一个 Hello.class 字节码文件;


假设说当前用户所在的目录为 d:\mldnjava ,那么在这样的情况下可以直接使用 Java 命令进行 Hello.class 字节码文件的解释。但是如果说现在脱离了这个目录,将当前目录修改为“ C :\( C 盘目录下并没有 Hello.class 字节码文件) ,如果再次执行程序解释,这个时候会出现如下的错误提示信息:

错误:找不到或无法加载主类Hello
原因:java.lang.ClassNotFoundException:Hello

这个错误提示在 Java 1.8中无法看到,但在1.9中可以,这是为什么呢?因为从1.6版本开始, Java 支持多国语言版本,它会根据当前系统的语言环境自动显示中文或英文。在1.8中,只能看到部分提示;而在1.9中,可以看到完整的提示。因此,请大家先记住第一个单词“ ClassNotFoundException ”。


因为当前目录中没有字节码,那么现在的需求就是:可以在不同的目录中都执行d:\mldnjava\ Hello.class文件。所以在这样的处理要求下,我们就只能够依靠CLASSPATH环境属性来完成。

范例:定义CLASSPATH环境属性

SET CLASSPATH = d:\mldnjava

当设置了 CLASSPATH 之后,这个时候在 Java 程序解释的时候会自动的通过 CLASSPATH 所设置的路径进行类的加载的,所以可以得出一个结论: JVM 解释程序的时候需要得到 CLASSPATH 的支持。


但是有一个问题,发现默认情况下所有解释的类都是从当前所在的目录中加载的,所以可以得出一个结论:CLASSPATH 的默认设置为当前所在目录加载类文件。


很明显如果到处去设置 CLASSPATH 就会造成整个系统操作的混乱,那么从正常的角度来讲,对于CLASSPATH 还是应该采用默认设置方式。所以如果这个时候要想只通过当前目录加载,则可以将 CLASSPATH 设置为“.

范例:从当前所在路径加载类

SET CLASSPATH =.

在一些时候如果你安装了一些与 Java 开发的程序软件的时候,它有可能会自动的修改默认的CLASSPATH,也就是说这个.的配置会消失。这种情况下就必须利用命令自己重新设置回来。

但是需要注意的是,现在CLASSPATH是在一个命令行下的配置,如果该命令行关闭了,那么相关的属性配置也将消失,以最好的做法是将其定义为全局属性,则可以直接在系统中追加有一个属性信息。

image.png

之前我们已经配置过相关属性,在相同的位置,可以新建一个CLASSPATH,并在其后添加一个“.”。这是最佳的做法。

面试题:

请问PATH和CLASSPATH区别?

l PATH:是操作系统提供的路径配置,定义所有可执行程序的路径;

l CLASSPATH:是由JRE提供的,用于定义Java程序解释时类加载路径,默认设置的为当前所在目录加载,可以通过“ SET CLASSPATH =路径”命令形式来进行定义;

逻辑关系:JVM → CLASSPATH定义的路径→加载字节码文件。

所以CLASSPATH是Java定义的环境属性,是在Java程序解释的时候使用的。

 

相关文章
关于 QtCreator中写Qt程序遇到printf不输出问题 的解决方法
关于 QtCreator中写Qt程序遇到printf不输出问题 的解决方法
|
11月前
|
安全 JavaScript 前端开发
跨域问题如何解决
跨域问题是指浏览器同源策略限制了不同域名之间的资源访问。解决方法包括:1. CORS(跨域资源共享):服务器设置Access-Control-Allow-Origin响应头;2. JSONP:利用script标签不受同源策略限制的特点;3. 代理服务器:通过后端代理转发请求。
|
7月前
|
运维 Kubernetes Java
Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
通过引入Koupleless框架,解决了多应用部署中资源浪费和运维成本高的问题,实现了模块瘦身、快速部署及流量控制优化,大幅降低了服务器资源占用和发布耗时,提升了系统稳定性和运维效率。最终,人力家成功实现了多应用的轻量集中部署,显著减少了运维成本。
 Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
|
6月前
|
机器学习/深度学习 人工智能 编解码
月之暗面开源16B轻量级多模态视觉语言模型!Kimi-VL:推理仅需激活2.8B,支持128K上下文与高分辨率输入
月之暗面开源的Kimi-VL采用混合专家架构,总参数量16B推理时仅激活2.8B,支持128K上下文窗口与高分辨率视觉输入,通过长链推理微调和强化学习实现复杂任务处理能力。
419 5
月之暗面开源16B轻量级多模态视觉语言模型!Kimi-VL:推理仅需激活2.8B,支持128K上下文与高分辨率输入
|
7月前
关于阿里云用DEEPseek的满血用法
推荐先观看大佬视频,按步骤操作。虽有不连贯处但不影响,重点是只能做最新更新的任务,做往期任务会被扣费,这点非常重要,请务必注意。新手请严格按照此流程进行,避免不必要的损失。
|
7月前
|
NoSQL IDE MongoDB
Studio 3T 2025.4 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
Studio 3T 2025.4 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
252 0
Studio 3T 2025.4 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
|
7月前
|
人工智能 城市大脑 分布式计算
课时7:阿里云ET:人工智能可以是这样的
阿里云ET是阿里巴巴集团研发的超级人工智能,具备智能语音交互、图像视频识别、交通预测、情感分析等技能。作为杭州城市大脑的核心,ET依托强大的计算能力,在城市治理、工业制造、健康医疗等领域广泛应用,成为人类可靠的助手。其卓越的感知与思考能力,使ET在复杂局面下迅速做出最优决策。
230 0
|
11月前
|
弹性计算 运维 负载均衡
阿里云SLB的性能优势
【11月更文挑战第3天】
256 3
|
资源调度 前端开发 JavaScript
前端研发链路之脚手架
本文首发于微信公众号“前端徐徐”。文章介绍了前端开发中脚手架工具的重要性及其工作原理。脚手架工具能够大幅提升开发效率,确保代码质量和项目一致性。文章详细探讨了脚手架的历史、工作原理、常见工具及其优势与潜在问题,并展望了其未来发展方向,帮助开发者更好地理解和应用脚手架工具。
312 4
前端研发链路之脚手架
|
11月前
|
人工智能 atlas 开发工具
【AI系统】昇腾 AI 架构介绍
昇腾计算产业基于华为昇腾系列处理器,涵盖硬件、基础软件、应用使能等,构建全栈AI计算基础设施。华为通过开放硬件、开源软件,支持多框架,推动AI技术在端、边、云的广泛应用,促进AI产业生态繁荣。
864 1