- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《JAVA类路径说明新手必读
一、类路径 ? (class path)
当你满怀着希望安装好java,然后兴冲冲地写了个“hello world”,然后编译, 运行,就等着那两个美好的单词出现在眼前。可是不幸的是,只看到了“Cant find class HelloWorld”或者“Exception in thread "main" java.lang.NoSuchMethodError: main。
为什么呢?编译好的class明明在呀。
我们一起来看一看java程序的运行过程。我们已经知道java是通过java虚拟机来解释运行的,也就是通过java命令—javac编译生成的.class文件就是虚拟机要执行的代码, 称之为字节码(bytecode),虚拟机通过classloader来装载这些字节码,也就是通常意义上的类。这里就有一个问题,classloader从哪里知道java本身的类库及用户自己的类在什么地方呢?或者有着缺省值(当前路径) ,或者要有一个用户指定的变量来表明,这个变量就是类路径(classpath),或者在运行的时候传参数给虚拟机。这也就是指明classpath的三个方法。编译的过程和运行的过程大同小异,只是一个是找出来编译,另一个是找出来装载。实际上java虚拟机是由java luncher初始化的,也就是java (或java.exe) 这个程序来做的。虚拟机按以下顺序搜索并装载所有需要的类:
1、引导类:组成java平台的类,包含rt.jar和i18n.jar中的类。
2、扩展类:使用java扩展机制的类,都是位于扩展目录($JAVA_HOME/jre/lib/ext) 中的.jar档案包。
3、用户类:开发者定义的类或者没有使用java扩展机制的第三方产品。你必须在命令行中使用-classpath选项或者使用CLASSPATH环境变量来确定这些类的位置。
我们在上面所说的用户自己的类就是特指这些类。
这样,一般来说,用户只需指定用户类的位置,引导类和扩展类是“自动”寻找的。那么到底该怎么做呢?用户类路径就是一些包含类文件的目录,.jar, .zip文件的列表,至于类具体怎么找,因为牵扯到package的问题,下面将会说到,暂时可认为只要包含了这个类就算找到了这个类。根据平台的不同分隔符略有不同,类unix的系统基本上都是“:”,windows多是“;”。其可能的来源是: * ? “. ”, 即当前目录,这个是缺省值。
* ? CLASSPATH环境变量,一旦设置,将缺省值覆盖。
* ? 命令行参数-cp或者-classpath,一旦指定,将上两者覆盖。
* ? 由-jar参数指定的.jar档案包,就把所有其他的值覆盖,所有的类都来自这个指定的档案包中。由于生成可执行的.jar文件,还需要其他一些知识,比如package,还有特定的配置文件,本文的最后会提到。可先看看jdk自带的一些例子。
我们举个HelloWorld的例子来说明。先做以下假设:
* ? 当前目录是/HelloWorld(或c:\HelloWorld, 以后都使用前一个)
* ? jdk版本为1.2.2 (linux下的)
* ? PATH环境变量设置正确。(这样可以在任何目录下都可以使用工具)
* ? 文件是HelloWorld.java,内容是:
? ? public ? class ? HelloWorld
? ? {
public ? static ? void ? main(String[] ? args)
{
System.out.println( Hello ? World!\n );
System.exit(0);
}
}
首先这个文件一定要写对,如果对c熟悉的话,很有可能写成这样:
public ? static ? void ? main(int ? argc,String[] ? argv)
{
....
}
这样是不对的,不信可以试一试。由于手头没有java的规范,所以作如下猜想: java的application程序,必须以public ? static ? void ? main(String[])开始,其他不一样的都不行。
到现在为止,我们设置方面只设置了PATH。
1、当前路径就是指你的.class文件在当前目录下,
[HelloWorld]$ ? javac ? HelloWorld.java ? ? //这一步不会有多大问题,
[HelloWorld]$ ? java ? HelloWorld ? ? ? ? ? ?// ? 这一步可能就会有问题.。
如果出了象开头那样的问题,首先确定不是由于敲错命令而出错。如果没有敲错命令,那么接着做:
[HelloWorld]
文档评论(0)