当前位置:
文档之家› lesson09 Java包和导入和类路径
lesson09 Java包和导入和类路径
–右击project,选中properties,在弹出窗口中, 左侧菜单选择Java Build Path,右侧选择 Libraries标签,点击Add External JARs, 在弹出 文件框中选择合适的jar添加进来,一路OK退 出。
jar(4)
谢 谢!
17
• Java支持多个目录放置Java,并且通过 package/import/classpath/jar等机制配合使 用,可以支持多处地方放置和调用Java类。
package/import(2)
• • • • • • • • package 包 在Java类文件的第一句话给出包的名称 package .ecnu; public class PackageExample { } 类的全称.ecnu.PackageExample 在引用类的时候,必须采用全称 PackageExample.java必须严格放置在 cn/edu/ecnu目录下
• 具体的命令可以在控制台下输入jar后可以 看到全的帮助文档。
jar(3)
• • • • 命令行编译和运行,在classpath中引入jar javac –cp .;c:\temp;xxx.jar Test.java java –cp .;c:\temp;xxx.jar Test eclipse内导入jar
jar(2)
• jar的主执行文件是jar.exe,也是位于 JAVA_HOME的bin目录下。 • jar的主要命令有:
–jar cvf classes.jar A.class B.class // 将A和B压 缩集成为classes.jar –jar cvf classes.jar –C foo/ . //将foo下面的 所有文件压缩为classes.jar
jar(1)
• jar文件是Java所特有的一种文件格式。 • jar文件实际上是一组class文件的压缩包
–jar文件可以包括多个class,比多层目录更加简洁实用 –jar文件经过压缩,只有一个文件,在网络下载和传播 方面,更具有优势 –jar文件只包括class,而没有包含java文件,在保护源文 件知识版权方面,能够可以起到更好的作用 –将多个class文件压缩成jar文件(只有一个文件),可 以规定给一个版本号,更容易进行版本控制
package/import(8)
• Package规则(续)
–Classpath参数可以是路径,也可以是jar包(参 见下面的Jar节)。如果路径内有空格,请将 classpath参数整体加一对双引号。例如 java – classpath “.;c:\temp;c:\a bc” A.B.C –-classpath 可以简写成-cp。
package/import(2)
• • • • • • 包名 package name必须唯一 域名是唯一的,因此常用域名做包名 域名逆序:.ecnu,从大到小 类的完整名字:包名+类名 包名:和目录层次一样 但是包具体放在什么位置不重要,编译和 运行的时候再指定。
package/import(3)
package/import(6)
类名(全称) A.B.C 文件名 C.java 文件全路径 C:\m1\A\B\C.java
D.E.F( 引 用 了
A.B.C) G.H(引用了D.E.F, 没有直接但是间接引用 了 A.B.C , 因 此 仍 然需
F.java
d:\m2\D\E\F.java
G.H
package/import(7)
• package规则
–编译一个类,需要java文件的全路径,包括扩 展名。运行一个类,需要写类名全称(不是文 件路径),也不能写扩展名。 –编译类的时候,需要给出这个类所调用的类( 包括被调用类所依赖的类)的所在路径。运行 类的时候,需要给出这个类,以及被调用类的 路径总和。 –classpath的参数在Windows平台是以半角分号 隔开;在Linux平台是以半角冒号隔开。
package/import(5)
• • • • java –classpath .;c:\temp PackageExampleTest Java,执行命令,是java.exe的简写。 -classpath 固定格式参数,可以简写成-cp. 第三部分是一个(以分号连接起来的)字符串。以 分号作为分隔符隔开,得到一个个子路径。当运 行PackageExampleTest类的过程中,如果需要用到 其他的类,就会分裂第三部分的字符串,得到多 个子路径,然后依次在每个路径下,再去寻找相 应类(全称,包名以点隔开对应到目录)。 • 主执行类的全称(含包名)
package/import(9)
• import规则
–import必须全部放在package之后,类定义之前 。 –多个Import的顺序无关。 –可以用*来引入一个目录下的所有类,比如 import ng.*; 此意思是引入ng下面所 有的类文件,当不包括ng下面所有的子 目录文件,即并不包括ng.reflect.*; 换句话 说,不能递归包含各个目录下的文件。
E:\m3\G\H.java
要给出A.B.C的路径)
A. B.C D. E.F G. H 编译 X>javac c:\m1\A\B\C.java 运行 X>java –classpath .;c:\m1 A.B.C 编译 X>javac –classpath .;c:\m1 d:\m2\D\E\F.java 运行 X>java –classpath .;c:\m1;d:\m2 D.E.F 编译 X>javac –classpath .;c:\m1;d:\m2 e:\m3\G\H.java 运行 X>java –classpath .;c:\m1;d:\m2;e:\m3 G.H Javac对应的是java.exe 编译命令,java对应java.exe 运行命令
Java 程序设计
第九讲 包、导入和类路径
华东师范大学
陈良育
1
Outline
• package
• import
• classpath
• jar
2
package/import(1)
• 所有的Java类都是放置在同一个目录下面的 ,因此类之间的相互调用无需显式声明调 用。
–同一个目录下,两个类的名字不能相同 –文件过多,查找和修改都不易,且容易出错。
• 在PackageExampleTest.java中,我们可用 import关键字来引入PackageExample类 • //PackageExampleTest.java • import .ecnu.PackageExample; // • 必须写类的全称 • public class PackageExampleTest • {…main函数,参见代码…}
package/imageExample的上级目录依次 是ecnu,edu,cn。 • 而再上层的路径,将会在类运行的时候依 靠classpath参数来决定。Java将依靠这个环 境变量的指引去寻找合适所需要的类 • java PackageExampleTest • java –classpath .;c:\temp PackageExampleTest