- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java包的概念,虚拟机带包编译与执行、访问修饰符
包(package)作用:为了更好的组织类,Java提供了包机制。包是类的容器,包(package)用于将完成不同功能的类分类,放在不同的目录(包)下。包的命名包的名字有层次关系,各层之间以点分隔。包层次必须与Java开发系统的文件系统结构相同。程序员可以使用package指明源文件中的类属于哪个具体的包。定义一个包的语法格式为:package pkg1[.pkg2[.pkg3[…………]]]包的命名规则: 包名第一个字母要小写。 把类定义在某个包下面,一般在源文件开头加上packagepkg1_包名; 则类的全名是pkg1_包名.类名如果定义类的时候没有使用package指定包名,则Java认为类位于默认包里面(default package)。编译执行 如果程序中声明了包名,即首行写了package com.xxx; 那么如果按照一般的编译方式javac源文件名.java 会在当前目录下生成class文件。 然后直接用:java源文件名执行,则会报错。 出现java.lang.NoClassDefFoundError产生问题的原因 包的意义在于产生一种目录结构,所以class文件必须位于相应的目录层次结构中。 以package com.xxx为例: 解决方案一种解决方式是手工建立com文件夹,里面建立xxx文件夹,把生成的class文件放在目录结构中,并且执行的时候采用java 完整类名(即带上包名)才能够执行。? Java 中带包的类的编译与执行以HelloWorld.java为例( 假设该文件的位置是/home/HelloWorld.java):[java]view plaincopyprint?package?a.b;??public?class?HelloWorld{???public?static?void?main(String[]?args){????System.out.println(Hello?World!);???}??}??下面根据不同的编译方法来讨论:第一种编译方法( 编译直接生成class 文件,执行需先创建包的路径)假设当前目录为/src/java/ ,则编译命令为:javacHelloWorld.java补充:javac工具读取用 Java 编程语言编写的类和接口定义,并将它们编译成字节码类文件。缺省情况下,编译器将每个类文件与其源文件放在同一目录中。此处使用缺省的javac则编译完后产生的类文件(.class文件)会在与源文件(.java文件)在同一目录下,此时编译不会产生a目录、b目录。假设当前目录为/src/ ,则编译命令为:javac /src/java/HelloWorld.java或者使用相对路径:javac java/HelloWorld.java执行完该命令后, 在/src/java/ 目录下生成一个HelloWorld.class文件。执行文件(在java 目录下新建目录a ,在a 目录下新建目录b 将HelloWorld.class至于b 目录下;执行java a.b.HelloWorld),必须要按照包的结构先创建目录。第二种编译方法( 编译直接生成包的路径)假设当前目录为/src/java/ ,则编译命令为:javac -d . HelloWorld.java补充:javac -d . *.java 命令中的 “-d”则是设置类文件的目标目录。如果某个类是一个包的组成部分,则javac将把该类文件放入反映包名的子目录中,必要时创建目录。在此处会自动创建c目录、d目录。在d目录下生成编译后的类文件(HelloWorld.class)。说明:. 为指定编译路径为当前目录;生成的HelloWorld.class所有目录为/src/java/a/b/HelloWorld.class。javac -d c/d HelloWorld.java说明:c/d 为指定编译路径为/src/java/c/d ,同样也可以写成绝对路径如javac -d d:/ HelloWorld.java,前提是路径必须先存在;生成的HelloWorld.class所有目录为/src/java/c/d/a/b /HelloWorld.class。假设当前目录为/src/ ,则编译命令为:javac -d . java/HelloWorld.java说明:生成的HelloWorld.class所有目录为/src/a/b/HelloWorld.class。javac -d java/c/d java/HelloWorld.java说明:生成的HelloWorld.class所有目录为/src/java/a/b/HelloWorld.class。第三种编译方法(先把源文件按照包结构放到指定的
文档评论(0)