创建和应用Java包文件的两种方式(转)

创建和应用Java包文件的两种方式(转)

《Java编程艺术》章节选登。作者:高永强 清华大学出版社 (即将出版)
12.1  包——package
   。。。

12.1.1  包命名规范
      为了确保包文件名称的唯一性,Java对应用软件开发者,尤其对软件开发公司,在包的命名方面提出如下规范:

包名全部用英文小写字母。 必须符合Java合法命名语法格式。 使用倒写的互联网地址作为包名。如果仍然不能表示包文件名的唯一性时,加入地区性标识符。 避免使用Java API包名。例如java.lang、javax.swing等。

例1  . 应用Java包命名规范的例子。
  互联网地址                                  包名
FreeSkyTech.com                         com.freeskytech
Ohlone.edu/faculty/CS                   cs.faculty.edu.ohlone.usa
例2.作为学习和培训为目的的编程实践,建议使用具有清楚含义的文件目录作为包名。如本书例子中利用:
C:\javabook\classes\ch12\
作为储存包文件的目录,而包名为:ch12
12.1.2  创建包文件
  包文件的创建和应用通常有如下两种方式:

利用CLASSPATH。 利用Java JAR文件。

下面首先讨论利用CLASSPATH创建和使用包文件。以窗口操作系统为例,创建包文件可按如下步骤:
1.         创建用来储存生成的字节码文件的目录。Java规定,从总目录开始,至少有3个子目录。例如,如下储存包文件的目录:
C:\javabook\classes\ch12\         其中ch12为包名。
2.         在要创建成包文件的程序开始,按照以上目录,加入package语句。即:
package ch12;
public class PackageTest {
    public void print() {
        System.out.println(\"Here is message from Package Test ...\");
    }
}
3.         设立CLASSPATH。其目的是告诉Java编译器以及JVM在哪里可以找到和装载源代码和字节代码文件。根据Java规定,CLASSPATH必须转向比包文件储存目录高一级的目录。如在这个例子中,CLASSPATH应当是:C:\javabook\classes;
4.         创建储存源代码文件的目录。将源文件和生成的字节码文件分别储存在不同的目录中,以易于管理。如下创建储存源代码文件的目录:
C:\javabook\src\ch12\
5.         将PackageTest.java或者所有要创建包文件的源代码复制到这个目录中。
6.         编译。在操作系统的总目录C:\中,输入如下编译指令:
C:\javac –d javabook\classes javabook\src\ch12\PackageTest.java
       指令中,–d告诉编译器将生成的字节码文件储存到其后指定的目录中。最后参数指出储存源代码文件的目录。如果这个目录中有多个创建的包文件,可以将文件名修改为*.java。执行这个编译指令后,编译器将把所有生成的.class文件储存到目录C:\javabook\classes\ch 12中。注意这个编译指令与以上各步骤的关系。如果指令不正确,将产生编译错误,或生成的字节文件不会被JVM装载。
也可使用两个子目录作为包名,如:
package ch12.share;
public class PackageTest2 {
    ...
}
储存包文件的文件目录为:C:\javabook\classes\ch12\share\
 
而CLASSPATH依然为:  C:\javabook\classes\
 
注意  在窗口操作系统中,表示子目录的前斜划线\\或后斜划线/均为合法。

12.1.3  引入包文件
      如同我们引入API包类一样,创建了的包文件,可以用import引入到程序中应用。例如上面的例子:
 
import ch12.PackageTest1;
import ch12.PackageTest2;
 也可以利用: 
import ch12.*;     

引入包ch12中所有的包类。注意,PackageTestApp.java可以储存在任何目录中编译和运行。
 
12.1.4  JAR文件
       创建和使用包文件的另外一种常用方式是利用Java的JAR文件。JDK的目录\jre\lib\ext允许以Java压缩文件,JAR(Java Archive)文件形式,储存自定义包类。任何编程人员都可以在程序中引入这些压缩的包文件,并加以应用。这种方式无需设立CLASSPATH。JAR文件可以包括多个包类,用来提高引入、编译以及装载效率。在编译时,Java编译器将首先自动对引入的包文件解压。
JDK中的指令jar可以用来创建JAR文件。假设有如下两个要创建为JAR文件的演示程序:
 
package ch12;
public class PackageTest1 {
public void print() {
    System.out.println(\"Here is Package Test 1 message...\");
    }
}
 
以及:
 
package ch12;
public class PackageTest2 {
public void print() {
    System.out.println(\"Here is Package Test 2 message...\");
    }

可按照如下步骤创建和引入JAR文件:
1.         创建储存包文件的目录。与利用CLASSPATH创建包文件目录的要求相同,从总目录开始,必须至少有3个子目录。如:C:\javabook\classes\ch12\
2.         将包文件(源代码文件)复制到以上目录中。
3.         分别编译每个程序。
4.         创建JAR文件。输入如下jar指令:
C:\javabook\classes\jar cvf ch12.jar ch12\* 
这个指令在当前目录中产生一个包括子目录所有文件的名为ch12.jar的压缩文件。三个jar指令的选项cvf的含义为:c——创建JAR文件;v——显示创建过程信息;f——跟随的是jar文件名。“*”表示将包括源代码在内的程序都压缩在JAR文件中。也可以利用如下指令只包括字节文件:
C:\javabook\classess\jar cvf ch12.jar ch12\*.class
注意,一般JAR文件名使用小写字母。可以是任何Java合法标识符。
5.         将创建的jar文件拷贝到JDK的子目录\jre\lib\ext\中。
6.         实现引入。任何程序都可以引入这个JAR文件中的包类。例如:
import ch12.*;                                        //引入所有包类
public class PackageJarTestApp {
        public static void main(String[] args) {
        PackageTest1 myPackage = new PackageTest1();    //利用引入的包类创建对象
        myPackage.print();                              //调用其方法
        PackageTest2 yourPackage = new PackageTest2();
        yourPackage.print();
    }
}
如同引入API包类一样,如果只需要import单独的包类,在import中写明具体类名。如:
import ch12.OtherClass;
12.1.5  IDE中的包
       几乎所有流行的Java IDE都采用包和项目机制来管理应用程序的编写和开发。从这一章开始,所有举例程序都利用Eclipse的包来储存和管理。
       IDE中的包机制为创建和引入包类提供了方便。编程人员不必按照详细操作步骤创建包文件,也不必为引入包类出错而担忧。编程人员只需考虑如何在IDE中设置包。
       下面以Eclipse为例,讨论如何在IDE中设置包。其他IDE的设置,可参考相关IDE文件。
       假设将上面小节讨论过的PackageTest1.java和PackageTest2.java作为项目Ch12的包文件。因为Eclipse自动生成包文件,首先需要删除两个程序中的package指令。删除后的PackageTest1源代码如下所示:
public class PackageTest1 {
        public void print() {
            System.out.println(\"Here is Package Test 1 message...\");
        }
}
   PackageTest2.java与此相同。
    Eclipse提供了许多方法设置包。如下列举的是其典型步骤:
1.         创建项目Project。如File→New→Project→Next,输入项目名,如Ch12。按下Finish。
2.         在项目名下,如Ch12,选择File→New→Package,在Name:窗口条中输入包名,如ch12,按下Finish。
3.         在项目Ch12中,创建一个用来储存包类的子目录,例如classes。
4.         将以上两个程序拷贝至子目录classes中。完成包的设置。注意Eclipse自动在程序开始加入package classes;
       如下为引入这两个包类的驱动程序:
package ch12;
import classes.*; //引入包classes的所有类,即PackageTest1以及PackageTest2
public class PackageTestApp2 {
      public static void main(String[] args) {
      PackageTest1 myPackage = new PackageTest1();
      myPackage.print();
      PackageTest2 yourPackage = new PackageTest2();
      yourPackage.print();
    }
}
如果把要引入包类的程序,如上例的驱动程序和包类都储存在同一个目录,或包中,如ch12,以上步骤可省略。import 语句则无必要。

 

 

 

自己总结的一些经验。。

1、java规定从总目录开始要有三层目录,如C:\javapack\classes 在此下就可以定义自己的包,还有一点,如果包下面还有子包,那么在其他类导入时,子包也要写。。。忘了这个还以为哪里错了,卡了好久。

2.上面文章总结了两种方法,感觉第二种比较容易操作,第一种其实也还好。。就是得注意环境变量的设置。注意一点就是,java里classpath规定必须转向比包文件目录高一级的目录,如上面的话就得 C:\javapack\classes

3.在eclipse,发现在同一个工程里创建的包可以被其他类使用,前提类必须public。

其实就是要验证protected能否在同一个包内使用,无意撤出那么多。。。后面我们课程有学就是了。。

#java学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB double、str、cell间的类型转换

注:转换的前提是数组的格式符合目标数组的要求,能够转换。不然会失败str2numstr2doublesrt2matstrvcatstrcatcellstr字符数组转为元胞数组(没有strcell)int2str整数转换为字符串数组,非整数将四舍五入num2str非整数数组…

【动态规划】数字三角形2

【题目描述】 数字三角形要求走到最后mod 100最大 【输入格式】 第1行n&#xff0c;表示n行 <25第2到n1行为每个的权值 【输出格式】 mod 100最大值 【分析】 设置状态f[i][j][k]表示(i,j)各自内是否mod 100可以为k。 状态转移方程&#xff1a; f[i][j][k]f[i1][j][ka[i1][j…

面向 NLP 任务的大模型 Prompt 设计

很久之前&#xff0c;我们介绍到&#xff0c;prompt是影响下游任务的关键所在&#xff0c;当我们在应用chatgpt进行nlp任务落地时&#xff0c;如何选择合适的prompt&#xff0c;对于SFT以及推理环节尤为重要。 不过&#xff0c;硬想不是办法&#xff0c;我们可以充分参考开源的…

MATLAB安装第三方工具箱

1.1 如果是Matlab安装光盘上的工具箱&#xff0c;重新执行安装程序&#xff0c;选中即可&#xff1b;1.2 如果是单独下载的工具箱&#xff0c;一般情况下仅需要把新的工具箱解压到某个目录。2 在matlab的file下面的set path把它加上&#xff0c;或者用genpath(yourlocation/you…

Debug method

#define DEBUG(format,...) printf("Ray.he file:"__FILE__" func:%s() line:%d, print "format"", __func__, __LINE__, ##__VA_ARGS__)转载于:https://www.cnblogs.com/debruyne/p/9254619.html

soa学习路线_Web服务安全性和SOA路线图的人为维度

soa学习路线在大多数非平凡的SOA环境中&#xff0c;很难跟踪系统之间不断发展的集成&#xff0c;除非有明确的发布和查找适当信息的方法。 概述IT环境&#xff0c;定义当前或将要连接的内容&#xff0c;是维护环境的先决条件。 缺少这种方法通常会导致“面向意大利面条的环境”…

MATLAB函数参数个数控制

if nargin < 1 else if nargin < 2 else if nargin < 4 end

生产Java应用程序中的十大异常类型-基于1B事件

Pareto记录原理&#xff1a;97&#xff05;的记录错误语句是由3&#xff05;的唯一错误引起的 在最新的数据整理帖子之后&#xff0c;我们收到了很多反馈和问题&#xff0c;在该文章中&#xff0c;我们显示97&#xff05;的记录错误是由10个唯一错误引起的 。 根据普遍的需求&…

Matlab矩阵查找

find(x&#xff09;find(Aa)find(A>a)find(A>a,n);A为目标矩阵&#xff0c;a为要查找的数&#xff0c;n为查找的个数&#xff0c;返回位置

剑指Offer 斐波那契数列

时间限制&#xff1a;1秒 空间限制&#xff1a;32768K 热度指数&#xff1a;332130算法知识视频讲解 题目描述 大家都知道斐波那契数列&#xff0c;现在要求输入一个整数n&#xff0c;请你输出斐波那契数列的第n项。 n<39 给出代码&#xff1a; class Solution { public:int…

Matlab将一矩阵中等于某个值的元素全部替换成另一个值

A(Ax)X; %将A中等于x的值全部替换为XA(isnan(A))X;%将A中等于nan的值全部替换为X

教你制作QQ空间超高连通率背景音乐链接。

1.进入【搜搜音乐】http://music.soso.com/index.html 搜索你想要的歌曲名字。。。如下图&#xff1a; 2、 3.此链接地址并不能做背景链接&#xff0c;因为腾讯加密了&#xff0c;你只需将链接地址里的qq改成%71%71就可以作为背景音乐链接了。如图&#xff1a;

linux中查找文件属于那个软件包的方法

一、linux中查找文件属于那个软件包的方法 [rootsalt prod]# whereis htpasswdhtpasswd: /usr/bin/htpasswd /usr/share/man/man1/htpasswd.1.gz [rootsalt prod]# rpm -qf /usr/bin/htpasswdhttpd-tools-2.4.6-80.el7.centos.x86_64转载于:https://www.cnblogs.com/nulige/p/9…

java io顺序_Java顺序IO性能

java io顺序许多应用程序将一系列事件记录到基于文件的存储中&#xff0c;以供以后使用。 从日志记录和审核&#xff0c;直到在事件源设计或其紧密相关的CQRS中保留事务重做日志&#xff0c;这都可以是任何东西。 Java具有多种方法&#xff0c;可以通过这些方法将文件顺序写入或…

Matlab矩阵的拼接

oneyeardata.fert [(0:14),zeros(15,3);oneyeardata.fert;(50:90),zeros(41,3)];%把0补齐

sqlmap常用操作命令

一、sqlmap常用基础命令 sqlmap Common operation command 以下命令顺序即为sql注入常见步骤。 sqlmap -u [“url”] --dbs #获取数据库 sqlmap -u [“url”] --current-user #获取当前用户名称 &#xff1a; sqlmap -u [“url”] --current-db #获取当前数据库名称 sqlmap -u …

hdu 2066

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 12820 Accepted Submission(s): 4343 Problem Description虽然草儿是个路痴&#xff08;就是在杭电待了一年多&#xff0c;居然还会在校园里迷路…

Java EE 8,当前状态是什么:自2015年底以来已完成工作的案例研究

对于那些密切关注Java EE的人来说&#xff0c;在过去的六个月中已经很清楚&#xff0c;活动有所减少&#xff0c;尤其是在Oracle保持领先的JSR中。 这是怎么回事&#xff1f; 最近&#xff0c;在这方面&#xff0c;Java EE社区进行了很多讨论&#xff0c;我认为给开发人员社区一…

Matlab矩阵替换所有等于某个值的数

若非NaN&#xff1a;a[2,5;1,4;1,4;3,6;3,6;2,5];a(a1)0;%所有1替换为0%上述方法可以把数替换为NaN但不能把NaN替换为数 若为NaNa(isnan(a))0;%将NaN替换为0

将Sublime Text3添加到右键菜单中

方法一&#xff08;推荐&#xff09; 把以下代码&#xff0c;复制到SublimeText3的安装目录&#xff0c;然后重命名为&#xff1a;sublime_addright.inf&#xff0c;然后右击安装就可以了。 PS&#xff1a;重命名文件之前&#xff0c;需要先在工具--文件夹选项&#xff0c;查看…