AP计算机科学A(APcomputer science A)复习备考攻略视频教程
42880 人在学
在我们可以安放一个Bean到一个可激活Bean的可视化构建工具中前,它必须被放入到标准的Bean容器里,也就是包含Bean类和一个表示“这是一个Bean”的清单文件的JAR(java ARchive,Java文件)文件中。清单文件是一个简单的紧随事件结构的文本文件。对于BangBean而言,清单文件就像下面这样:
Manifest-Version: 1.0
Name: bangbean/BangBean.class
Java-Bean: True
其中,第一行指出清单文件结构的版本,这是SUN公司在很久以前公布的版本。第二行(空行忽略)对文件命名为BangBean.class。第三行表示“这个文件是一个Bean”。没有第三行,程序构建工具不会将类作为一个Bean来认可。
唯一难以处理的部分是我们必须肯定“Name:”字段中的路径是正确的。如果我们回顾BangBean.java,我们会看到它在package bangbean(因为存放类路径的子目录称为“bangbean”)中,并且这个名字在清单文件中必须包括封装的信息。另外,我们必须安放清单文件在我们封装路径的根目录上,在这个例子中意味着安放文件在bangbean子目录中。这之后,我们必须从同一目录中调用Jar来作为清单文件,如下所示:
jar cfm BangBean.jar BangBean.mf bangbean
这个例子假定我们想产生一个名为BangBean.jar的文件并且我们将清单放到一个称为BangBean.mf文件中。
我们可能会想“当我编译BangBean.java时,产生的其它类会怎么样呢?”哦,它们会在bangbean子目录中被中止,并且我们会注意到上面jar命令行的最后一个自变量就是bangbean子目录。当我们给jar子目录名时,它封装整个的子目录到jar文件中(在这个例子中,包括BangBean.java的源代码文件——对于我们自己的Bean我们可能不会去选择包含源代码文件。)另外,如果我们改变主意,解开打包的JAR文件,我们会发现我们清单文件并不在里面,但jar创建了它自己的清单文件(部分根据我们的文件),称为MAINFEST.MF并且安放它到META-INF子目录中(代表“meta-information”)。如果我们打开这个清单文件,我们同样会注意到jar为每个文件加入数字签名信息,其结构如下:
Digest-Algorithms: SHA MD5
SHA-Digest: pDpEAG9NaeCx8aFtqPI4udSX/O0=
MD5-Digest: O4NcS1hE3Smnzlp2hj6qeg==
一般来说,我们不必担心这些,如果我们要做一些修改,可以修改我们的原始的清单文件并且重新调用jar以为我们的Bean创建了一个新的JAR文件。我们同样也可以简单地通过增加其它的Bean的信息到我们清单文件来增加它们到JAR文件中。
值得注意的是我们或许需要安放每个Bean到它自己的子目录中,因为当我们创建一个JAR文件时,分配JAR应用目录名并且JAR放置子目录中的任何文件到JAR文件中。我们可以看到Frog和BangBean都在它们自己的子目录中。
一旦我们将我们的Bean正确地放入一个JAR文件中,我们就可以携带它到一个可以激活Bean的编程环境中使用。使用这种方法,我们可以从一种工具到另一种工具间交替变换,但SUN公司为Java Beans提供了免费高效的测试工具在它们的“Bean Development Kit,Bean开发工具”(BDK)称为“beanbox”。在我们启动beanbox前,放置我们的Bean到beanbox中,复制JAR文件到BDK的“jars”子目录中。