javax.management.MalformedObjectNameException: ObjectName: invalid character ':' in value part of property...
C:\Program Files\Java\j2sdk1.5.0 → 空格導致 JMX 解析 ObjectName 屬性值時截斷,產生非法冒號。jmxri.jar、jmxtools.jar 等,與 JDK 1.5 內建 JMX (JSR 160) 衝突。# 重新安裝或移動 JDK C:\Java\jdk1.5.0 ← 無空格 # 更新環境變數 JAVA_HOME=C:\Java\jdk1.5.0 PATH=%JAVA_HOME%\bin;%PATH%
# Windows
set CLASSPATH=
bin\httpd.exe
# Linux/Unix
export CLASSPATH=""
bin/httpd.sh
Resin 自帶完整類庫,不依賴外部 CLASSPATH。
-verbose 診斷實際 CLASSPATH
bin/httpd.exe -verbose
# 輸出環境變數與實際類載入路徑,定位衝突 JAR
%RESIN_HOME%\lib\、%JAVA_HOME%\jre\lib\ext\、應用 WEB-INF/lib\。jmxri.jar, jmxtools.jar, mx4j*.jar 等舊實現。MalformedObjectNameException。| 原則 | 說明 |
|---|---|
| JDK 路徑無空格 | 避免 Windows 路徑空格導致各類工具解析失敗 |
| 生產環境不依賴系統 CLASSPATH | 應用伺服器/建構工具自管理類路徑 |
| JDK 1.5+ 內建 JMX | 無需額外 JMX RI,避免版本衝突 |
| 定期清理 lib/ext 目錄 | 防止舊版擴展污染類載入 |
Resin JMX 啟動異常 90% 由 **CLASSPATH 空格** 或 **舊版 JMX JAR 殘留** 引起。遷移 JDK 至簡單路徑並清空啟動 CLASSPATH 可一勞永逸。