首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 應用程式與 Applet 使用 JAR 封存檔完整指南

     編輯:Java 程式設計入門

JAR 執行機制

Java 1.2 引入 JAR 增強功能,支援直接執行封存後的應用程式與 Applet。

應用程式:java -jar 指令

java -jar MyApp.jar
  • JAR META-INF/MANIFEST.MF 必須包含 Main-Class 屬性指定進入點
  • Windows:安裝 JRE 時註冊 .jar 檔案關聯,雙擊即可執行
  • Solaris 2.6+:核心擴充辨識 JAR 魔數,直接調用 Java 解釋器執行

Applet:<APPLET> 標籤 ARCHIVE 屬性

<APPLET CODE="MyApplet.class" ARCHIVE="myapp.jar" WIDTH="300" HEIGHT="200">
</APPLET>

瀏覽器載入順序:

  1. 優先從 ARCHIVE 指定的 JAR 檔案中尋找 CODE 指定的主類別及相依資源
  2. 若 JAR 中找不到,再嘗試從伺服器下載對應類別檔
  3. 若 ARCHIVE 不存在,直接從伺服器下載

多重 JAR 檔案支援

<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
ARCHIVEJAR 檔案 URL 列表app.jar, lib/util.jar
CODEBASE相對 URL 基底路徑./classes/
WIDTH/HEIGHTApplet 顯示區域尺寸300, 200

JAR 封裝最佳實務

# 建立含 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,避免單一巨大 JAR
  • 簽署 JAR (jarsigner) 以獲得更高權限(檔案存取、網路連線等)
  • 最佳化:移除除錯資訊 (javac -g:none)、啟用壓縮 (jar -0 僅儲存不壓縮)

常見問題排查

現象可能原因解決方案
ClassNotFoundExceptionJAR 內類別路徑與 CODE 不符確認 JAR 內部結構:package/path/Class.class
SecurityException未簽署 Applet 嘗試受限操作簽署 JAR、調整 java.policy、使用 JNLP
載入緩慢單一巨大 JAR、網路延遲拆分模組、啟用 GZIP 壓縮、CDN 分發

現代替代方案

瀏覽器已全面停止支援 Java Applet (NPAPI)。現代部署建議:

  • Java Web Start (JNLP):已於 Java 11 移除
  • 獨立應用程式:java -jar、jlink 打包精簡 JRE
  • Web 技術重寫:Java → GWT/TeaVM → JavaScript、或 Spring Boot + 前端框架
  • GraalVM Native Image:編譯為原生執行檔,啟動極快
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved