再来学习Java classpath

<!-- google_ad_client = "pub-4615277071069293"; /* 文字连接广告横行A */ google_ad_slot = "7077201342"; google_ad_width = 728; google_ad_height = 15; //-->

摘要:关于classpath的东西我在我的博客上写过一篇文章。我想这次简单一些, 换个角度来说class找不到。从绝对路径类全名来说!

本文针对的是Windows平台,其他的同理。

我们假设你的Hellow.java源文件放在c:\java里,你JDK是刚安装的任意版本,你没有改动你系统变量的classpath(也没有添加或是修改)。

我们的类代码清单是:

  1. packagenet.csdn.blog.qb2049_xg;
  2. publicclassHelloWorld
  3. {
  4. publicstaticvoidmain(Stringargs[])
  5. {
  6. System.out.println("HelloWorld!");
  7. }
  8. }

请你注意我们的命令行的绝对路径,以及NoClassDefFoundError的错误情况。如下图一:

classpath-error

图一

分清两个东西,绝对路径“c:\java\”和类全名“net.csdn.blog.qb2049_xg.HelloWorld”。为什么 我把这里的“net.csdn.blog.qb2049_xg.HelloWorld”叫做类全名呢,这是因为不论在什么地方JVM都是这样调用的,而不是简单的调用HelloWorld,因为我们第一行的package 限制了它这样调用。这里的.java和.class放在同一个目录中。进一步讨论,请你看图二

classpath-error

图二

绝对路径下执行类全名,“C:\java>java net.csdn.blog.qb2049_xg.HelloWorld”,注意我这里的 类全名绝对路径,这两个那一个出现问题,就会抛出NoClassDefFoundError的异常。JVM执行时在当前的目录中寻 找net.csdn.blog.qb2049_xg.HelloWorld类,然后加载执行。如果找不到,就会用异常告知。我们再看图三,命令执行以后,文件的产生结果。

classpath-error

图三

我们把目录中的HelloWorld.class删除,然后执行如图四的命令:

classpath-error

图四

注意我画线强调的,尤其时参数后面的点“.”,不知道为什么,JDK非要这样才能让我的类文件放在指定的包中。图四的命令执行以后,产生如图五的文件结构 :

classpath-error

图五

我们此时执行C:\java>java net.csdn.blog.qb2049_xg.HelloWorld,你发现了还是正确的。为什么呢?net目录此时对于JVM来说那不是Windows下的目录。那是 为了更好管理我们java类的包,用package把一些相关的类放在一个包里面,好管理也是安全的。记着它不是纯粹的目录,包的魅力就是让Java更好的扩展。现在我们来讨论绝对路径 ,其实这里的“C:\java\”,就是类路径,就是classpath值,它的指定可以让你在任何地方随心所欲,如图六,我们换一个目录:

classpath-error

图六

你现在分清楚类全名绝对路径的关系了吗?如果没有请留下E_mail,我 们进一步讨论!如果你在一个目录中建立一个项目,而且使用的“原始工具”,JDK+记事本+命令行,那么把该绝对目录添加到你的系统变量中去,可以在具体编译或是执行时去掉classpath选项。具体 的如何操作,请查看:

希望你对本文留下建议,谢谢!

<!-- google_ad_client = "pub-4615277071069293"; /* 文字广告-横向A */ google_ad_slot = "2531196800"; google_ad_width = 728; google_ad_height = 90; //-->

<!-- google_ad_client = "pub-4615277071069293"; /* 图片广告-横向A */ google_ad_slot = "5730752301"; google_ad_width = 728; google_ad_height = 90; //-->

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值