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

Java 程式發布實戰(二):Win32 包裝器啟動自帶 JRE 應用

     編輯:J2SE

背景

為了讓使用者雙擊即可執行 Java 應用,而不依賴系統安裝的 JRE,可編寫一個輕量級 Win32 可執行檔(EXE)作為啟動器,調用應用程式目錄下自帶的 jre\bin\javaw.exe。

C++ 代碼:WinMain 入口

int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   LPSTR lpszCmdLine, int nCmdShow) {
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    ZeroMemory(&pi, sizeof(pi));

    // 啟動子進程:使用自帶 JRE 執行 jar
    if (!CreateProcess("jre\\bin\\javaw.exe",
                       "jre\\bin\\javaw.exe -jar MyApp.jar",
                       NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
        ErrorExit("CreateProcess failed.");
    }

    WaitForSingleObject(pi.hProcess, INFINITE);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    return 0;
}

部署結構

MyApp/
├── MyApp.jar
└── jre/          # 複製自 JRE 安裝目錄,可精簡
    └── bin/javaw.exe

關鍵點

  • EXE 與 jre 目錄同層,javaw.exe 會自動向上查找 ../lib 定位 JRE。
  • 無需修改系統 PATH 或註冊表,實現真正的「綠色部署」。
  • 可進一步精簡 JRE(移除 license、多餘二進制檔、未用模組)將體積從 ~70MB 壓縮至 ~50MB 甚至更小。

本文來自編程入門網:原文連結

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved