Java 中的 ClassPath 和 Package

Java 中的 ClassPath 和 Package

ID:40556835

大小:54.00 KB

页数:12页

时间:2019-08-04

Java 中的 ClassPath 和 Package_第1页
Java 中的 ClassPath 和 Package_第2页
Java 中的 ClassPath 和 Package_第3页
Java 中的 ClassPath 和 Package_第4页
Java 中的 ClassPath 和 Package_第5页
资源描述:

《Java 中的 ClassPath 和 Package》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Java中的ClassPath和Package前言:    由于这两个问题新手问得较多,且回答比较零散,很难统一整理,所以就直接写了一篇,还请大家见谅.正文:一,类路径(classpath)    当你满怀着希望安装好了java,然后兴冲冲地写了个helloworld,然后编译,运行,就等着那两个美好的单词出现在眼前,可是不幸的是,只看到了Can'tfindclassHelloWorld或者Exceptioninthread"main"java.lang.NoSuchMethodError:mai

2、n.为什么呢?编译好的class明明在呀.    我们一起来看一看java程序的运行过程.我们已经知道java是通过java虚拟机来解释运行的,也就是通过java命令,javac编译生成的.class文件就是虚拟机要执行的代码,称之为字节码(bytecode),虚拟机通过classloader来装载这些字节码,也就是通常意义上的类.这里就有一个问题,classloader从哪里知道java本身的类库及用户自己的类在什么地方呢?或者有着缺省值(当前路径).或者要有一个用户指定的变量来表明,这个变量就是类路径

3、(classpath),或者在运行的时候传参数给虚拟机.这也就是指明classpath的三个方法.编译的过程和运行的过程大同小异,只是一个是找出来编译,另一个是找出来装载.    实际上java虚拟机是由javaluncher初始化的,也就是java(或java.exe)这个程序来做的.虚拟机按以下顺序搜索并装载所有需要的类:    1,引导类:组成java平台的类,包含rt.jar和i18n.jar中的类.    2,扩展类:使用java扩展机制的类,都是位于扩展目录($JAVA_HOME/jre/li

4、b/ext)中的.jar档案包.    3,用户类:开发者定义的类或者没有使用java扩展机制的第三方产品.你必须在命令行中使用-classpath选项或者使用CLASSPATH环境变量来确定这些类的位置.我们在上面所说的用户自己的类就是特指这些类.    这样,一般来说,用户只需指定用户类的位置,引导类和扩展类是"自动"寻找的.    那么到底该怎么做呢?用户类路径就是一些包含类文件的目录,.jar,.zip文件的列表,至于类具体怎么找,因为牵扯到package的问题,下面将会说到,暂时可认为只要包含了

5、这个类就算找到了这个类.根据平台的不同分隔符略有不同,类unix的系统基本上都是":",windows多是";".其可能的来源是:    *".",即当前目录,这个是缺省值.    *CLASSPATH环境变量,一旦设置,将缺省值覆盖.    *命令行参数-cp或者-classpath,一旦指定,将上两者覆盖.    *由-jar参数指定的.jar档案包,就把所有其他的值覆盖,所有的类都来自这个指定的档案包中.由于生成可执行的.jar文件,还需要其他一些知识,比如package,还有特定的配置文件,本文的

6、最后会提到.可先看看jdk自带的一些例子.    我们举个HelloWorld的例子来说明.先做以下假设:    *当前目录是/HelloWorld(或c:HelloWorld,以后都使用前一个)    *jdk版本为1.2.2(linux下的)    *PATH环境变量设置正确.(这样可以在任何目录下都可以使用工具)    *文件是HelloWorld.java,内容是:    publicclassHelloWorld    {        publicstaticvoidmain(String[

7、]args)        {            System.out.println("HelloWorld!");            System.exit(0);        }    }    首先这个文件一定要写对,如果对c熟悉的话,很有可能写成这样:    publicstaticvoidmain(intargc,String[]argv)    {        ....    }    这样是不对的,不信可以试一试.由于手头没有java的规范,所以作如下猜想:java的app

8、lication程序,必须以publicstaticvoidmain(String[])开始,其他不一样的都不行.    到现在为止,我们设置方面只设置了PATH.    1,当前路径就是指你的.class文件在当前目录下,        HelloWorld$javacHelloWorld.java  //这一步不会有多大问题,        HelloWorld$javaHelloWorld        //这一步可能就

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。