一、java包的用法---基础,二、包的用法---进阶,三、JAR命令用法,包是一组类的集合,包其实就是多个文件夹构成的多级目录,包名全部用小写字母表示,在程序中要声明类所属的包时,用package
2011-10-28 17:12
736 查看
一、包的用法---基础
包是一组类的集合,包其实就是多个文件夹构成的多级目录,包名全部用小写字母表示,在程序中要声明类所属的包时,用package关键字。
package edu.cn.fzh;
package语句必须作为整个文件的第一条语句,并且只能有一条。如图1所示
![](http://hi.csdn.net/attachment/201110/28/0_1319795366Damy.gif)
图1 package的用法
并把Hello.java文件保存到F:\下,并编译,运行,如图2所示,编译没问题,但运行结果不对,因为NoClassDefFoundError: Hello,没有找到名字叫Hello的类。
![](http://hi.csdn.net/attachment/201110/28/0_1319795375e5M7.gif)
图2 编译运行结果(1)
原因是,现在已经有了包了:edu.cn.fzh, 类不能叫Hello,而应加上包名,运行时应修改为, java edu.cn.fzh.Hello,但结果依然不对,如图3所示:
![](http://hi.csdn.net/attachment/201110/28/0_1319795384Zez2.gif)
图3编译运行结果(2)
解决方法:修改编译命令,应该用以下命令进行编译。
javac -d . Hello.java
-d的含义是根据程序中的包名生成文件夹,“.”的含义是在哪生成文件夹,代表在当前路径(F:\)生成edu文件夹,如图4所示,将编译后生成的class类放到edu\cn\fzh目录下,
![](http://hi.csdn.net/attachment/201110/28/0_1319795392UzyC.gif)
图4 –d命令编译自动生成目录
这样就把类文件和源程序文件分开。
运行程序时应该输入java edu.cn.fzh.Hello, 不能直接使用java Hello
二、包的用法---进阶
在以上的演示中,我们并没有把源程序文件,Hello.java放在包对应的目录下,如果类Hello可能被其他的类调用,那么应该将Hello.java源程序放在edu/cn/fzh的目录下,如图5,图6所示:
![](http://hi.csdn.net/attachment/201110/28/0_13197953993959.gif)
图5 目录
![](http://hi.csdn.net/attachment/201110/28/0_13197954055J9c.gif)
图6 Hello.java 内容
将Test.java文件保存到F:\,内容如图7所示:
![](http://hi.csdn.net/attachment/201110/28/0_1319795411ycDd.gif)
图7 Test.java内容
在F:\下建立class文件夹,编译命令如图8所示:该命令中只编译主类即可,系统会自动对其他类进行编译。
![](http://hi.csdn.net/attachment/201110/28/0_1319795416H9eh.gif)
图8 编译命令
此时class文件的内容如图9、图10所示
![](http://hi.csdn.net/attachment/201110/28/0_1319795422o614.gif)
图9 编译后结果(1)
![](http://hi.csdn.net/attachment/201110/28/0_1319795428MsZ3.gif)
图10 编译后结果(2
运行程序的命令如图11所示:
![](http://hi.csdn.net/attachment/201110/28/0_1319795933CmKN.gif)
图11 运行命令
这样就将class文件和java源程序文件分开,但这时class文件有多个,
三、JAR命令用法
JAR文件,就是将程序的所有类文件.class文件压缩打包,类似与zip,但与zip不同,JAR文件还包含了一个META-INF/MANIFEST.MF的文件。
JAR打包的过程:
在class目录下创建一个文件,名字随意定,扩展名随意,也可以没有扩展名,如文件就叫mani,提前在文件中输入以下内容:
Main-Class: Test
注意: Main-Class 写法固定,区分大小写,冒号后要由空格,作用是指示该jar的入口类即主类,如果该类有包,要注明包名,但没有“.java”,也没有”.class”
最后别忘了输入“回车符”
JAR包命令如下:(注意修改命令的路径到class文件和mani文件所在的路径)
![](http://hi.csdn.net/attachment/201110/28/0_1319795440IjTf.gif)
具体内容:
1. JAR为命令名
2. cvmf为jar命令子命令,其中c代表创建jar文件,v代表生成详细报告,m表示指定Manifest清单文件,及刚才创建的mani文件,f代表指定jar文件名字
3. mani代表Manifest清单文件的名字,如果有后缀名要注明后缀名
4. app.jar表示生成的jar文件的名字
5. 后面的edu和Test.class表示要加入到jar包中的文件或文件夹
生成的报告及app.jar文件:
![](http://hi.csdn.net/attachment/201110/28/0_1319795446Y23H.gif)
![](http://hi.csdn.net/attachment/201110/28/0_1319795451L71e.gif)
运行jar文件的命令:
包是一组类的集合,包其实就是多个文件夹构成的多级目录,包名全部用小写字母表示,在程序中要声明类所属的包时,用package关键字。
package edu.cn.fzh;
package语句必须作为整个文件的第一条语句,并且只能有一条。如图1所示
![](http://hi.csdn.net/attachment/201110/28/0_1319795366Damy.gif)
图1 package的用法
并把Hello.java文件保存到F:\下,并编译,运行,如图2所示,编译没问题,但运行结果不对,因为NoClassDefFoundError: Hello,没有找到名字叫Hello的类。
![](http://hi.csdn.net/attachment/201110/28/0_1319795375e5M7.gif)
图2 编译运行结果(1)
原因是,现在已经有了包了:edu.cn.fzh, 类不能叫Hello,而应加上包名,运行时应修改为, java edu.cn.fzh.Hello,但结果依然不对,如图3所示:
![](http://hi.csdn.net/attachment/201110/28/0_1319795384Zez2.gif)
图3编译运行结果(2)
解决方法:修改编译命令,应该用以下命令进行编译。
javac -d . Hello.java
-d的含义是根据程序中的包名生成文件夹,“.”的含义是在哪生成文件夹,代表在当前路径(F:\)生成edu文件夹,如图4所示,将编译后生成的class类放到edu\cn\fzh目录下,
![](http://hi.csdn.net/attachment/201110/28/0_1319795392UzyC.gif)
图4 –d命令编译自动生成目录
这样就把类文件和源程序文件分开。
运行程序时应该输入java edu.cn.fzh.Hello, 不能直接使用java Hello
二、包的用法---进阶
在以上的演示中,我们并没有把源程序文件,Hello.java放在包对应的目录下,如果类Hello可能被其他的类调用,那么应该将Hello.java源程序放在edu/cn/fzh的目录下,如图5,图6所示:
![](http://hi.csdn.net/attachment/201110/28/0_13197953993959.gif)
图5 目录
![](http://hi.csdn.net/attachment/201110/28/0_13197954055J9c.gif)
图6 Hello.java 内容
将Test.java文件保存到F:\,内容如图7所示:
![](http://hi.csdn.net/attachment/201110/28/0_1319795411ycDd.gif)
图7 Test.java内容
在F:\下建立class文件夹,编译命令如图8所示:该命令中只编译主类即可,系统会自动对其他类进行编译。
![](http://hi.csdn.net/attachment/201110/28/0_1319795416H9eh.gif)
图8 编译命令
此时class文件的内容如图9、图10所示
![](http://hi.csdn.net/attachment/201110/28/0_1319795422o614.gif)
图9 编译后结果(1)
![](http://hi.csdn.net/attachment/201110/28/0_1319795428MsZ3.gif)
图10 编译后结果(2
运行程序的命令如图11所示:
![](http://hi.csdn.net/attachment/201110/28/0_1319795933CmKN.gif)
图11 运行命令
这样就将class文件和java源程序文件分开,但这时class文件有多个,
三、JAR命令用法
JAR文件,就是将程序的所有类文件.class文件压缩打包,类似与zip,但与zip不同,JAR文件还包含了一个META-INF/MANIFEST.MF的文件。
JAR打包的过程:
在class目录下创建一个文件,名字随意定,扩展名随意,也可以没有扩展名,如文件就叫mani,提前在文件中输入以下内容:
Main-Class: Test
注意: Main-Class 写法固定,区分大小写,冒号后要由空格,作用是指示该jar的入口类即主类,如果该类有包,要注明包名,但没有“.java”,也没有”.class”
最后别忘了输入“回车符”
JAR包命令如下:(注意修改命令的路径到class文件和mani文件所在的路径)
![](http://hi.csdn.net/attachment/201110/28/0_1319795440IjTf.gif)
具体内容:
1. JAR为命令名
2. cvmf为jar命令子命令,其中c代表创建jar文件,v代表生成详细报告,m表示指定Manifest清单文件,及刚才创建的mani文件,f代表指定jar文件名字
3. mani代表Manifest清单文件的名字,如果有后缀名要注明后缀名
4. app.jar表示生成的jar文件的名字
5. 后面的edu和Test.class表示要加入到jar包中的文件或文件夹
生成的报告及app.jar文件:
![](http://hi.csdn.net/attachment/201110/28/0_1319795446Y23H.gif)
![](http://hi.csdn.net/attachment/201110/28/0_1319795451L71e.gif)
运行jar文件的命令:
![](http://hi.csdn.net/attachment/201110/28/0_1319795458DRyE.gif)
相关文章推荐
- Java Jar命令集合 用法
- Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte
- mac删除带有多级目录或文件的文件夹命令
- Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte
- 命令行执行Java程序加载指定目录中的Jar文件
- Linux学习经验(一)终端创建目录到运行程序过程+基础终端命令
- java程序,编写一个程序,输出一个字符串中的大写英文字母数,小写英文字母数及非英文字母数
- Java(JVM)虚拟机结构基础,和JAR文件包及jar命令详解
- Java(JVM)虚拟机结构基础,和JAR文件包及jar命令详解
- Java中jar命令用法详解
- 使用jar命令打包java程序
- 详解jar命令打包生成双击即可运行的Java程序
- Java(JVM)虚拟机结构基础,和JAR文件包及jar命令详解
- JAVA使用jar命令制作可执行GUI程序
- [KinectWPF程序]将深度图像用彩色图像表示,其实就是深度值和像素值的简单转换
- 【Java基础 003】 jar的运行命令
- 如何把java程序编译成.exe文件(就是制作可执行的JAR文件包)
- 还谈工作流--工作流平台其实就是维护集合里的一组链表
- java复制文件夹下全部的文件到指定目录
- Java基础进阶_day07_(泛型,Collection集合,迭代器,增强for循环)