详解Java中-classpath和路径的使用
发布时间 - 2026-01-11 00:31:36 点击率:次javac -classpath的使用:

javac:如果当前你要编译的Java文件中引用了其它的类(比如说:继承),但该引用类的.class文件不在当前目录下,这种情况下就需要在javac命令后面加上-classpath参数,通过使用以下三种类型的方法 来指导编译器在编译的时候去指定的路径下查找引用类。
(1).绝对路径:javac -classpath c:/junit3.8.1/junit.jar Xxx.java
(2).相对路径:javac -classpath ../junit3.8.1/Junit.javr Xxx.java
(3).系统变量:javac -classpath %CLASSPATH% Xxx.java (注意:%CLASSPATH%表示使用系统变量CLASSPATH的值进行查找,这里假设Junit.jar的路径就包含在CLASSPATH系统变量中)
javac 绝对路径的使用:
javac:假设你要编译的类文件名叫:HelloWorld.java,其完全路径为:D:/java/HelloWorld.java。但你所在的当前目录是:C:/Documents and Settings/peng>。如果想在这里执行编译,会有什么结果呢?
(1).C:/Documents and Settings/peng> javac HelloWorld.java 这时编译器会给出如下的错误提示信息:
error: cannot read: HelloWorld.java
这是因为默认情况下javac是在当前目录下查找类文件,很明显这个路径不是我们存放类文件的地方,所以就会报错了
(2).C:/Documents and Settings/peng>javac D:/java/HelloWorld.java
这时编译成功。
所以,只要你执行javac命令的目录不是类文件存放的目录,你就必须在javac命令中显式地指定类文件的路径。
java -classpath的使用:
java:假设我们的CLASSPATH设置为:D:/peng/java/pro ,在该目录下有三个文件:HelloWorld.java / HelloWorldExtendsTestCase / HelloWorldExtendsHelloWorld。这三个文件的类声明分别如下:
HelloWorld.java :public class HelloWorld
HelloWorldExtendsHelloWorld.java :public class HelloWorldExtendsHelloWorld extends HelloWorld
HelloWorldExtendsTestCase.java:public class HelloWorldExtendsTestCase extends junit.framework.TestCase
假设我们已经按照上面关于javac -classpath和javac 绝对路径的使用,顺利地完成了三个文件地编译。现在我们在C:/Documents and Settings/peng>目录下执行这三个.class文件
(1).C:/Documents and Settings/peng>java HelloWorld
Hello World
可以看到执行成功。为什么我们在 C:/Documents and Settings/peng>执行命令,JVM能够找到D:/peng/java/pro/HelloWorld.class文件呢?这是因为我们配置了系统变量CLASSPATH,并且指向了目录:D:/peng/java/pro 。所以JVM会默认去该目录下加载类文件,而不需要指定.class文件的绝对路径了。
(2).C:/Documents and Settings/peng>Java HelloWorldExtendsHelloWorld
Hello World
可以看到执行成功了。HelloWorldExtendsHelloWorld继承了HelloWorld类,所以在执行时JVM会先查找在CLASSPATH下是否存在一个HelloWorld.class文件,因为我们已经成功编译了HelloWorld 类了,所以可以成功执行HelloWorldExtendsHelloWorld.class
(3).C:/Documents and Settings/peng>java HelloWorldExtendsTestCase
Exception in thread "main" java.lang.NoClassDefFoundError: junit/framework/TestCase
可以看到程序抛出异常了,提示找不到junit.framework.TestCase文件。为什么同样在:/peng/java/pro 下,HelloWorldExtendsHelloWorld.class就可以成功执行,而这个就不行了呢?这是因为: junit.framework.TestCase.class文件并不存在于当前目录下,所以为了能够让程序成功运行,我们必须通过指定CLASSPATH的方式,让JVM可以找到junit.framework.TestCase这个类,如(4):
(4). C:/Documents and Settings/peng>java -classpath %CLASSPATH% HelloWorldExtendsTestCase
Hello World
总结:
(1).何时需要使用-classpath:当你要编译或执行的类引用了其它的类,但被引用类的.class文件不在当前目录下时,就需要通过-classpath来引入类
(2).何时需要指定路径:当你要编译的类所在的目录和你执行javac命令的目录不是同一个目录时,就需要指定源文件的路径(CLASSPATH是用来指定.class路径的,不是用来指定.java文件的路径的)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# javac
# classpath
# java
# 取classpath路径
# 路径
# Java中classpath讲解及使用方式
# java项目中classpath指向哪里
# java项目中classpath的理解
# 解决java.lang.NoClassDefFoundError: android.support.
# JavaWeb项目中classpath路径详解
# java动态添加外部jar包到classpath的实例详解
# Java 中 Class Path 和 Package的使用详解
# 你要
# 目录下
# 可以看到
# 这是因为
# 会报
# 这三个
# 情况下
# 是在
# 在这里
# 你就
# 找不到
# 和你
# 提示信息
# 而不
# 错了
# 只要你
# 三种
# 很明显
# 但你
# 我们必须
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
装修招标网站设计制作流程,装修招标流程?
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
JavaScript如何实现错误处理_try...catch如何捕获异常?
Laravel如何优化应用性能?(缓存和优化命令)
php 三元运算符实例详细介绍
网站制作免费,什么网站能看正片电影?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
Laravel如何发送系统通知?(Notification渠道示例)
QQ浏览器网页版登录入口 个人中心在线进入
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
如何在自有机房高效搭建专业网站?
Laravel怎么上传文件_Laravel图片上传及存储配置
网站建设要注意的标准 促进网站用户好感度!
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
C#如何调用原生C++ COM对象详解
如何用PHP快速搭建CMS系统?
*服务器网站为何频现安全漏洞?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
Laravel如何实现数据库事务?(DB Facade示例)
新三国志曹操传主线渭水交兵攻略
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
WordPress 子目录安装中正确处理脚本路径的完整指南
教学论文网站制作软件有哪些,写论文用什么软件
?
做企业网站制作流程,企业网站制作基本流程有哪些?
如何破解联通资金短缺导致的基站建设难题?
javascript基于原型链的继承及call和apply函数用法分析
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
Laravel怎么为数据库表字段添加索引以优化查询
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
如何快速搭建个人网站并优化SEO?
昵图网官网入口 昵图网素材平台官方入口
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Laravel如何为API生成Swagger或OpenAPI文档
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
如何快速查询域名建站关键信息?
动图在线制作网站有哪些,滑动动图图集怎么做?
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
香港服务器选型指南:免备案配置与高效建站方案解析
如何确认建站备案号应放置的具体位置?
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】

