Java(Eclipse Temurin)Windows 安裝
Eclipse Temurin 是 Adoptium 發行的免費 OpenJDK,也是 Oracle 以外最多人用的 Java
以下腳本都會自動抓最新 LTS 版本並驗證檔案,三種方式擇一,整段貼到 PowerShell 執行
- 選項 A:裝好就能用,最簡單
- 選項 B:全自動,所有使用者共用
- 選項 C:不需要管理員權限
選項 A:手動安裝 MSI(最簡單)
開啟安裝畫面自己點下一步,PATH 會自動設好,需要 JAVA_HOME 時勾選「Set JAVA_HOME variable」
# 取得最新 LTS 版本資訊
$Lts = (Invoke-RestMethod https://api.adoptium.net/v3/info/available_releases).most_recent_lts
$Pkg = (Invoke-RestMethod "https://api.adoptium.net/v3/assets/latest/$Lts/hotspot?architecture=x64&image_type=jdk&os=windows&vendor=eclipse")[0]
# 下載 MSI
$Msi = "$env:TEMP\temurin.msi"
Invoke-WebRequest -Uri $Pkg.binary.installer.link -OutFile $Msi
# 驗證檔案
if ((Get-FileHash $Msi -Algorithm SHA256).Hash -ne $Pkg.binary.installer.checksum) { throw "SHA256 不符" }
# 開啟安裝畫面
Start-Process $Msi -Wait
Remove-Item $Msi
選項 B:自動安裝 MSI(系統變數)
以系統管理員身分執行,裝到預設位置,含 PATH、JAVA_HOME、.jar 關聯
# 取得最新 LTS 版本資訊
$Lts = (Invoke-RestMethod https://api.adoptium.net/v3/info/available_releases).most_recent_lts
$Pkg = (Invoke-RestMethod "https://api.adoptium.net/v3/assets/latest/$Lts/hotspot?architecture=x64&image_type=jdk&os=windows&vendor=eclipse")[0]
# 下載 MSI
$Msi = "$env:TEMP\temurin.msi"
Invoke-WebRequest -Uri $Pkg.binary.installer.link -OutFile $Msi
# 驗證檔案
if ((Get-FileHash $Msi -Algorithm SHA256).Hash -ne $Pkg.binary.installer.checksum) { throw "SHA256 不符" }
靜默安裝
# 讀取 MSI 內建的預設安裝位置
$Db = (New-Object -ComObject WindowsInstaller.Installer).OpenDatabase($Msi, 0)
function Get-MsiDir($Id) { $v = $Db.OpenView("SELECT ``DefaultDir`` FROM ``Directory`` WHERE ``Directory``='$Id'"); [void]$v.Execute(); ($v.Fetch().StringData(1) -split "\|")[-1] }
$InstallDir = "$env:ProgramFiles\$(Get-MsiDir PRODUCTMANUFACTURER)\$(Get-MsiDir INSTALLDIR)"
$Db = $null; [GC]::Collect(); [GC]::WaitForPendingFinalizers()
# 安裝
Start-Process msiexec -Wait -ArgumentList "/i `"$Msi`" ADDLOCAL=FeatureMain,FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome INSTALLDIR=`"$InstallDir`" /quiet"
Remove-Item $Msi
選項 C:自動安裝 zip(使用者變數)
一般權限即可,裝到 C:\Users\<你>\.local\java
# 設定安裝目錄
$JavaDir = "$env:USERPROFILE\.local\java"
# 取得最新 LTS 版本資訊
$Lts = (Invoke-RestMethod https://api.adoptium.net/v3/info/available_releases).most_recent_lts
$Pkg = (Invoke-RestMethod "https://api.adoptium.net/v3/assets/latest/$Lts/hotspot?architecture=x64&image_type=jdk&os=windows&vendor=eclipse")[0]
# 下載 zip
$Zip = "$env:TEMP\temurin.zip"
Invoke-WebRequest -Uri $Pkg.binary.package.link -OutFile $Zip
# 驗證檔案
if ((Get-FileHash $Zip -Algorithm SHA256).Hash -ne $Pkg.binary.package.checksum) { throw "SHA256 不符" }
解壓縮並設定環境變數
# 解壓縮到安裝目錄(覆蓋舊版)
Expand-Archive $Zip $env:TEMP -Force
if (Test-Path $JavaDir) { Remove-Item $JavaDir -Recurse -Force }
Move-Item "$env:TEMP\$($Pkg.release_name)" $JavaDir
Remove-Item $Zip
# 設定 JAVA_HOME
[Environment]::SetEnvironmentVariable("JAVA_HOME", $JavaDir, "User")
# 加入使用者環境變數
$UserPath = [Environment]::GetEnvironmentVariable("Path", "User")
if (($UserPath -split ";") -notcontains "$JavaDir\bin") {
[Environment]::SetEnvironmentVariable("Path", "$UserPath;$JavaDir\bin", "User")
}
確認安裝
裝完接著執行,重新載入環境變數並顯示安裝位置
# 重新載入環境變數
$env:Path = (($env:Path -split ";") + ([Environment]::GetEnvironmentVariable("Path", "Machine") -split ";") + ([Environment]::GetEnvironmentVariable("Path", "User") -split ";") | Where-Object { $_ } | Select-Object -Unique) -join ";"
foreach ($Scope in "Machine", "User") { $v = [Environment]::GetEnvironmentVariable("JAVA_HOME", $Scope); if ($v) { $env:JAVA_HOME = $v } }
# 顯示安裝位置
Write-Host "java 位置:$((Get-Command java).Source)"
Write-Host "JAVA_HOME:$env:JAVA_HOME"
確認版本
java -version
看到 Temurin-xx 的版本即成功
已裝過其他 Java 時,系統 PATH 會排在使用者 PATH 前面,選項 C 可能被舊版蓋過,先到「設定 > 應用程式」移除舊版
沒有留言:
張貼留言