為了讓使用者雙擊即可執行 Java 應用,而不依賴系統安裝的 JRE,可編寫一個輕量級 Win32 可執行檔(EXE)作為啟動器,調用應用程式目錄下自帶的 jre\bin\javaw.exe。
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
jre 目錄同層,javaw.exe 會自動向上查找 ../lib 定位 JRE。本文來自編程入門網:原文連結