<!--
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(也没有添加或是修改)。
我们的类代码清单是:
-
packagenet.csdn.blog.qb2049_xg;
-
publicclassHelloWorld
- {
-
publicstaticvoidmain(Stringargs[])
- {
-
System.out.println("HelloWorld!");
- }
- }
请你注意我们的命令行的绝对路径,以及NoClassDefFoundError的错误情况。如下图一:
图一
分清两个东西,绝对路径“c:\java\”和类全名“net.csdn.blog.qb2049_xg.HelloWorld”。为什么
我把这里的“net.csdn.blog.qb2049_xg.HelloWorld”叫做类全名呢,这是因为不论在什么地方JVM都是这样调用的,而不是简单的调用HelloWorld,因为我们第一行的package
限制了它这样调用。这里的.java和.class放在同一个目录中。进一步讨论,请你看图二
图二
在绝对路径下执行类全名,“C:\java>java net.csdn.blog.qb2049_xg.HelloWorld”,注意我这里的
类全名和绝对路径,这两个那一个出现问题,就会抛出NoClassDefFoundError的异常。JVM执行时在当前的目录中寻
找net.csdn.blog.qb2049_xg.HelloWorld类,然后加载执行。如果找不到,就会用异常告知。我们再看图三,命令执行以后,文件的产生结果。
图三
我们把目录中的HelloWorld.class删除,然后执行如图四的命令:
图四
注意我画线强调的,尤其时参数后面的点“.”,不知道为什么,JDK非要这样才能让我的类文件放在指定的包中。图四的命令执行以后,产生如图五的文件结构
:
图五
我们此时执行C:\java>java net.csdn.blog.qb2049_xg.HelloWorld,你发现了还是正确的。为什么呢?net目录此时对于JVM来说那不是Windows下的目录。那是
为了更好管理我们java类的包,用package把一些相关的类放在一个包里面,好管理也是安全的。记着它不是纯粹的目录,包的魅力就是让Java更好的扩展。现在我们来讨论绝对路径
,其实这里的“C:\java\”,就是类路径,就是classpath值,它的指定可以让你在任何地方随心所欲,如图六,我们换一个目录:
图六
你现在分清楚类全名和绝对路径的关系了吗?如果没有请留下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的折磨,为了让初学者少走弯路,我将这些经验总结了一番,总结了多种classpath的基本使用情况和常见的一些问题,以及解决方案和原理,供大家参考
在设置classpath环境变量之前,请确保已经正确配置了Java开发工具包(JDK)。 按照示例代码和步骤指导进行操作,特别是在配置环境变量时要注意路径的正确性和格式。 设置完classpath环境变量后,重新打开命令提示符...
我们学习Java 大概有3 个方向,第一,桌面系统,包括C/S 结构;第二,J2ME,面向无 限领域,很有潜力的家伙,看看中国的手机用户就知道了。第三,面向企业应用、计算的平 台,J2EE。 初次涉及Java 领域,感觉到Java ...
北京动力节点-Java编程零基础教程-049-Java基本语法-通过ASCII再理解字符编码.avi 北京动力节点-Java编程零基础教程-050-Java基本语法-ASCII.avi 北京动力节点-Java编程零基础教程-051-Java基本语法-ISO8859-1....
其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加载Class的;另一个问题是package和import问题,...
JAVA命令->要使用一个*.class文件(类文件)->通过classpath找到*.class文件所保存的真实目录,之后再进行加载执行 小结 Path的主要功能是设置JDK的可执行命令 classpath主要是在执行时候起作用,告诉JVM类的保存路径...
如果想学Java EE(对不起,我不了解JavaME,所以我无法涉及JavaME的相关内容),对于AWT、Swing是否要学习呢,我个人是觉得还是要知道其所以然的,特别是其事件处理模式,我强烈建议初学者一定要弄清楚,其他具体的...
超级好的JAVA学习资料(1) 讲解软件工程师体系结构、JAVA语言的发展过程、JDK的安装与配置、编写一个最简单的JAVA程序并通过程序讲解了classpath的作用
关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加载Class的;另一个问题是package和import问题,如何来寻找类的路径问题。把这两...
《Java 基础入门》课后习题答案 第 第 1 章 Java 开发入门 ...初学者学习和使用 Java 语言时, 首先必须下载和安装 JDK。JDK 中已经包含了 JRE 部分,初学者安装 JDK 后不必再去下载和安装 JRE 了。
第一章 1.Java 编程语言刚开始 Oak 橡树 办公室外 已被注册 边喝咖啡边讨论名称 2.动态加载类别文档、字符...javac需要某个路径来编译当前文件,也就是那个java命令需要。所以javac和java都需要指定好所依赖的路径。
我们学习Java大概有3个方向,第一,桌面系统,包括C/S结构;第二,J2ME,面向无限领域,很有潜力的家伙,看看中国的手机用户就知道了。第三,面向企业应用、计算的平台,J2EE。 初次涉及Java领域,感觉到Java入门是...
《java jdk 7学习笔记》是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习java时遇到的概念、操作、应用或认证考试等问题及解决方案。 《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是...
classpath的配置(为了java运行命令的时候去自动找.class文件) 增加一个classpath环境变量,设为 .;%%JAVA_HOME%\lib\dt.jar;JAVA_HOME%\lib\dt.jar (前面那个点必须要,代表编译的当前文件夹里面去运行.class文件) ...
在本篇文章里小编给大家分享了关于java中Path和ClassPath用法比较内容,有需要的朋友们学习下。
很多初学者或自学者,在学习java语言一开始,配置环境变量往往要卡很久。毕竟很多没有基础的人初次配置环境变量,成功率还是很低的。 所以写了一个这样的小软件。发不出来给大家用下。 软件很简单,使用步骤如下: ...
CLASSPATH:JAVA的库的路径,就是JDK的安装路径下的lib路径。 添加全局变量步骤如下: 右键点在桌面的计算机图标上,在弹出的菜单里选择Properties(属性)。 在弹出的窗口里,左侧边栏,点击Advanced system ...
这不是一本参考资料和Java百科全书,不是什么"宝典"和"大全",但却可以让新手变为老手,相信学完此书,再看任何以前看不懂的Java书都会显得非常轻松。即使是很有经验的老手,也能从本书中有巨大收益。如果你想非常...
2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。 3.在Editplus(或JCreator ,Textpad)环境下编写一个HelloWorld.java程序, (1)在主方法static public void main(String[ ] args)中调用System....
CLASSPATH详解;JAVA SOCKET编程;JAVA 编程技术中汉字问题。