全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Java中-classpath和路径的使用

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的使用详解  # 你要  # 目录下  # 可以看到  # 这是因为  # 会报  # 这三个  # 情况下  # 是在  # 在这里  # 你就  # 找不到  # 和你  # 提示信息  # 而不  # 错了  # 只要你  # 三种  # 很明显  # 但你  # 我们必须 


相关文章: 如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  如何通过网站建站时间优化SEO与用户体验?  网站专业制作公司有哪些,做一个公司网站要多少钱?  如何使用Golang安装API文档生成工具_快速生成接口文档  MySQL查询结果复制到新表的方法(更新、插入)  建站之星会员如何解锁更多建站功能?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何在宝塔面板中创建新站点?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  相册网站制作软件,图片上的网址怎么复制?  香港服务器如何优化才能显著提升网站加载速度?  Android滚轮选择时间控件使用详解  深圳网站制作的公司有哪些,dido官方网站?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何在Golang中引入测试模块_Golang测试包导入与使用实践  建站之星后台密码遗忘如何找回?  如何在IIS管理器中快速创建并配置网站?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  建站主机解析:虚拟主机配置与服务器选择指南  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  建站上市公司网站建设方案与SEO优化服务定制指南  浅谈Javascript中的Label语句  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  如何通过远程VPS快速搭建个人网站?  如何选择高性价比服务器搭建个人网站?  建设网站制作价格,怎样建立自己的公司网站?  如何选择建站程序?包含哪些必备功能与类型?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  实例解析Array和String方法  建站主机服务器选型指南与性能优化方案解析  如何在Ubuntu系统下快速搭建WordPress个人网站?  网站制作企业,网站的banner和导航栏是指什么?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  个人摄影网站制作流程,摄影爱好者都去什么网站?  英语简历制作免费网站推荐,如何将简历翻译成英文?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  如何在Golang中指定模块版本_使用go.mod控制版本号  零基础网站服务器架设实战:轻量应用与域名解析配置指南  建站主机类型有哪些?如何正确选型  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  外贸公司网站制作哪家好,maersk船公司官网?  如何通过山东自助建站平台快速注册域名?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  如何通过wdcp面板快速创建网站?  c# 在高并发下使用反射发射(Reflection.Emit)的性能 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。