详解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


相关推荐: 深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  Laravel中的Facade(门面)到底是什么原理  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  b2c电商网站制作流程,b2c水平综合的电商平台?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  如何用AI帮你把自己的生活经历写成一个有趣的故事?  如何将凡科建站内容保存为本地文件?  如何在建站宝盒中设置产品搜索功能?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  Laravel如何实现文件上传和存储?(本地与S3配置)  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  制作企业网站建设方案,怎样建设一个公司网站?  如何在云指建站中生成FTP站点?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  浅析上传头像示例及其注意事项  nodejs redis 发布订阅机制封装实现方法及实例代码  如何在万网利用已有域名快速建站?  中山网站推广排名,中山信息港登录入口?  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  js实现点击每个li节点,都弹出其文本值及修改  详解vue.js组件化开发实践  如何用wdcp快速搭建高效网站?  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  详解jQuery中基本的动画方法  Laravel如何与Inertia.js和Vue/React构建现代单页应用  如何快速登录WAP自助建站平台?  晋江文学城电脑版官网 晋江文学城网页版直接进入  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  米侠浏览器网页背景异常怎么办 米侠显示修复  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  昵图网官方站入口 昵图网素材图库官网入口  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  网站制作大概多少钱一个,做一个平台网站大概多少钱?  怎么用AI帮你为初创公司进行市场定位分析?  ,南京靠谱的征婚网站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  三星网站视频制作教程下载,三星w23网页如何全屏?  EditPlus中的正则表达式 实战(1)  Android实现代码画虚线边框背景效果  javascript中对象的定义、使用以及对象和原型链操作小结  Laravel如何使用withoutEvents方法临时禁用模型事件  如何用IIS7快速搭建并优化网站站点?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  C++时间戳转换成日期时间的步骤和示例代码  Laravel定时任务怎么设置_Laravel Crontab调度器配置