Java 1.2 引入 JAR 增強功能,支援直接執行封存後的應用程式與 Applet。
java -jar 指令java -jar MyApp.jar
META-INF/MANIFEST.MF 必須包含 Main-Class 屬性指定進入點.jar 檔案關聯,雙擊即可執行<APPLET> 標籤 ARCHIVE 屬性<APPLET CODE="MyApplet.class" ARCHIVE="myapp.jar" WIDTH="300" HEIGHT="200">
</APPLET>
瀏覽器載入順序:
ARCHIVE 指定的 JAR 檔案中尋找 CODE 指定的主類別及相依資源ARCHIVE 不存在,直接從伺服器下載<APPLET CODE="MainApplet.class"
ARCHIVE="core.jar, ui.jar, lib.jar"
WIDTH="400" HEIGHT="300">
</APPLET>
ARCHIVE 屬性接受逗號分隔的 URL 列表(相對或絕對路徑)CODEBASE 屬性指定的基底 URL 為準| 屬性 | 用途 | 範例 |
|---|---|---|
| CODE | 主 Applet 類別名稱(含 .class) | MyApplet.class |
| ARCHIVE | JAR 檔案 URL 列表 | app.jar, lib/util.jar |
| CODEBASE | 相對 URL 基底路徑 | ./classes/ |
| WIDTH/HEIGHT | Applet 顯示區域尺寸 | 300, 200 |
# 建立含 Manifest 的 JAR
jar cvfm MyApp.jar manifest.txt -C bin/ .
# manifest.txt 內容
Main-Class: com.example.MainApplet
Class-Path: lib/dependency1.jar lib/dependency2.jar
Class-Path 標頭宣告相依 JAR,避免單一巨大 JARjarsigner) 以獲得更高權限(檔案存取、網路連線等)javac -g:none)、啟用壓縮 (jar -0 僅儲存不壓縮)| 現象 | 可能原因 | 解決方案 |
|---|---|---|
| ClassNotFoundException | JAR 內類別路徑與 CODE 不符 | 確認 JAR 內部結構:package/path/Class.class |
| SecurityException | 未簽署 Applet 嘗試受限操作 | 簽署 JAR、調整 java.policy、使用 JNLP |
| 載入緩慢 | 單一巨大 JAR、網路延遲 | 拆分模組、啟用 GZIP 壓縮、CDN 分發 |
瀏覽器已全面停止支援 Java Applet (NPAPI)。現代部署建議:
java -jar、jlink 打包精簡 JRE