`
gyabooks
  • 浏览: 22937 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

再来学习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; //-->

分享到:
评论

相关推荐

    java的classpath的终结者(不会让你失望)

    本人在学习java的过程中深受classpath的折磨,为了让初学者少走弯路,我将这些经验总结了一番,总结了多种classpath的基本使用情况和常见的一些问题,以及解决方案和原理,供大家参考

    Java零基础 - classpath环境变量详解.md

    在设置classpath环境变量之前,请确保已经正确配置了Java开发工具包(JDK)。 按照示例代码和步骤指导进行操作,特别是在配置环境变量时要注意路径的正确性和格式。 设置完classpath环境变量后,重新打开命令提示符...

    java发展与学习方向

    我们学习Java 大概有3 个方向,第一,桌面系统,包括C/S 结构;第二,J2ME,面向无 限领域,很有潜力的家伙,看看中国的手机用户就知道了。第三,面向企业应用、计算的平 台,J2EE。 初次涉及Java 领域,感觉到Java ...

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-049-Java基本语法-通过ASCII再理解字符编码.avi 北京动力节点-Java编程零基础教程-050-Java基本语法-ASCII.avi 北京动力节点-Java编程零基础教程-051-Java基本语法-ISO8859-1....

    实用java学习过程

    其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加载Class的;另一个问题是package和import问题,...

    Java学习代码实例 JAVA基础,JAVA面向对象,JAVA高级.rar

    JAVA命令-&gt;要使用一个*.class文件(类文件)-&gt;通过classpath找到*.class文件所保存的真实目录,之后再进行加载执行 小结 Path的主要功能是设置JDK的可执行命令 classpath主要是在执行时候起作用,告诉JVM类的保存路径...

    java初学者的工具ppt文件

    如果想学Java EE(对不起,我不了解JavaME,所以我无法涉及JavaME的相关内容),对于AWT、Swing是否要学习呢,我个人是觉得还是要知道其所以然的,特别是其事件处理模式,我强烈建议初学者一定要弄清楚,其他具体的...

    超级好的JAVA学习资料(1)

    超级好的JAVA学习资料(1) 讲解软件工程师体系结构、JAVA语言的发展过程、JDK的安装与配置、编写一个最简单的JAVA程序并通过程序讲解了classpath的作用

    java深度历险——王森

    关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加载Class的;另一个问题是package和import问题,如何来寻找类的路径问题。把这两...

    传智播客.黑马程序员《Java 基础入门》课后习题答案

    《Java 基础入门》课后习题答案 第 第 1 章 Java 开发入门 ...初学者学习和使用 Java 语言时, 首先必须下载和安装 JDK。JDK 中已经包含了 JRE 部分,初学者安装 JDK 后不必再去下载和安装 JRE 了。

    java jdk8 学习笔记

    第一章 1.Java 编程语言刚开始 Oak 橡树 办公室外 已被注册 边喝咖啡边讨论名称 2.动态加载类别文档、字符...javac需要某个路径来编译当前文件,也就是那个java命令需要。所以javac和java都需要指定好所依赖的路径。

    Java入门学习指导之最佳方向(上)

    我们学习Java大概有3个方向,第一,桌面系统,包括C/S结构;第二,J2ME,面向无限领域,很有潜力的家伙,看看中国的手机用户就知道了。第三,面向企业应用、计算的平台,J2EE。 初次涉及Java领域,感觉到Java入门是...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《java jdk 7学习笔记》是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习java时遇到的概念、操作、应用或认证考试等问题及解决方案。  《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是...

    java中各种环境变量的配置

    classpath的配置(为了java运行命令的时候去自动找.class文件) 增加一个classpath环境变量,设为 .;%%JAVA_HOME%\lib\dt.jar;JAVA_HOME%\lib\dt.jar (前面那个点必须要,代表编译的当前文件夹里面去运行.class文件) ...

    java中Path和ClassPath用法比较

    在本篇文章里小编给大家分享了关于java中Path和ClassPath用法比较内容,有需要的朋友们学习下。

    JAVA环境变量配置工具

    很多初学者或自学者,在学习java语言一开始,配置环境变量往往要卡很久。毕竟很多没有基础的人初次配置环境变量,成功率还是很低的。 所以写了一个这样的小软件。发不出来给大家用下。 软件很简单,使用步骤如下: ...

    java 环境配置(2024超全教程)-学习Android第一步就是配置Java的开发环境-供大家学习研究参考

    CLASSPATH:JAVA的库的路径,就是JDK的安装路径下的lib路径。 添加全局变量步骤如下: 右键点在桌面的计算机图标上,在弹出的菜单里选择Properties(属性)。 在弹出的窗口里,左侧边栏,点击Advanced system ...

    张孝祥Java就业培训教程.pdf

    这不是一本参考资料和Java百科全书,不是什么"宝典"和"大全",但却可以让新手变为老手,相信学完此书,再看任何以前看不懂的Java书都会显得非常轻松。即使是很有经验的老手,也能从本书中有巨大收益。如果你想非常...

    《Java程序设计》课程实验指导书程序代码(答案)(实验一)

    2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。 3.在Editplus(或JCreator ,Textpad)环境下编写一个HelloWorld.java程序, (1)在主方法static public void main(String[ ] args)中调用System....

    Java学习材料(499篇文章)

    CLASSPATH详解;JAVA SOCKET编程;JAVA 编程技术中汉字问题。

Global site tag (gtag.js) - Google Analytics