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

Windows 安裝 JRE 報 IllegalArgumentException: Invalid characters in hostname 解決方案

     編輯:程式設計綜合問答

錯誤現象

IllegalArgumentException: Invalid characters in hostname

安裝程序解析系統主機名/用戶名時遇到非 ASCII 字符 (中文、特殊符號、空格) 導致異常。

根本原因

  • Windows 計算機名、用戶名、用戶配置文件路徑包含 **中文字符**、**全角符號**、**空格**。
  • JRE 安裝程序 (基於 InstallShield/自定義 Java 安裝器) 內部調用 `InetAddress.getLocalHost()` 或解析路徑構建 URL/URI,要求主機名符合 RFC 952/1123 (僅允許字母數字、連字符、點)。

解決方案 (按推薦順序)

1. 修改計算機名與用戶名為純 ASCII (徹底解決)

  1. 設置 → 系統 → 關於 → 重命名這台電腦 → 僅用字母數字連字符 (如 `DEV-PC-01`)。
  2. 控制面板 → 用戶帳戶 → 更改帳戶名稱 → 純英文 (如 `admin`)。
  3. **重啟電腦** 使環境變量 `USERPROFILE`、`HOMEPATH` 更新為新路徑。

2. 臨時設置環境變量繞過 (不改系統設置)

管理員 PowerShell 執行:

$env:USERNAME = "admin"
$env:COMPUTERNAME = "DEV-PC"
# 或指定安裝目錄參數 (視安裝器支持)
jre-8uXXX-windows-x64.exe /s INSTALLDIR="C:\Java\jre1.8"

3. 使用離線安裝包 + 手動解壓 (綜合安裝器)

  1. 下載 `.tar.gz` 或 `.zip` 版本 (Oracle 官網需登錄,或使用 Adoptium Temurin、Amazon Corretto、Azul Zulu 開源構建)。
  2. 解壓到純 ASCII 路徑:`C:\Java\jdk-21`。
  3. 手動配置 `JAVA_HOME`、`PATH` 環境變量。

4. 檢查安裝日誌定位具體調用棧

安裝器通常在 `%TEMP%` 生成日志 (如 `install.log`、`hs_err_pid*.log`),搜索 `Invalid characters` 定位具備調用類/方法,針對性繞過。

驗證安裝成功

java -version
# 輸出示例:
# openjdk version "21.0.2" 2024-01-16
# OpenJDK Runtime Environment Temurin-21.0.2+13 (build 21.0.2+13)
# OpenJDK 64-Bit Server VM Temurin-21.0.2+13 (build 21.0.2+13, mixed mode, sharing)

避坑指南

  • **不要在中文路徑下安裝任何 Java 開發工具** (JDK、Maven、Gradle、Tomcat、IDE),類加載、類路徑、JNI 庫加載、Javadoc 生成均可能因編碼/路徑解析失敗。
  • 企業環境推薦統一英文主機名、英文用戶名、純 ASCII 安裝目錄 (`D:\Dev\Java`)。
  • 定期更新至 LTS 版本 (8, 11, 17, 21) 獲取安全補丁與性能優化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved