在我們可以安放一個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”。(我們可以從www.javasoft.com處下載。)在我們啟動beanbox前,放置我們的Bean到beanbox中,復制JAR文件到BDK的“jars”子目錄中。