PyCharm 為 Java 應用 (基於 IntelliJ 平台),啟動時需偵測有效的 JDK 環境。Linux 下常見錯誤:
Error: cannot start PyCharm
No JDK found to run PyCharm. Please validate either PYCHARM_JDK, JDK_HOME or JAVA_HOME environment variable points to valid JDK installation.
本文提供標準修復流程、環境變數永久配置與多 JDK 管理建議。
# 1. 確認 JDK 安裝路徑 (以 OpenJDK 17 為例)
ls /usr/lib/jvm/
# 輸出範例: java-17-openjdk-amd64 java-11-openjdk-amd64
# 2. 設定環境變數並啟動
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
# 進入 PyCharm bin 目錄執行
./pycharm.sh
sudo vim /etc/profile.d/pycharm-jdk.sh
寫入:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
儲存後:source /etc/profile.d/pycharm-jdk.sh 或重新登入。
vim ~/.bashrc
# 或 ~/.profile (登入 Shell 讀取)
# 末尾加入:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
source ~/.bashrc 生效。
編輯 PyCharm 安裝目錄下的 bin/pycharm64.vmoptions (或 pycharm.vmoptions):
-vm
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
此為 JVM 啟動參數,優先級最高,專指定 PyCharm 使用的 Java 執行檔。
# Ubuntu/Debian
sudo apt update && sudo apt install openjdk-17-jdk
# CentOS/RHEL/Fedora
sudo dnf install java-17-openjdk-devel
# Arch/Manjaro
sudo pacman -S jdk17-openjdk
系統共存多個 JDK 時,使用 update-alternatives 切換預設:
# 註冊
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1700
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-17-openjdk-amd64/bin/javac 1700
# 互動式切換
sudo update-alternatives --config java
sudo update-alternatives --config javac
或使用 SDKMAN! 管理多版本 JDK/IDE (強烈推薦開發者使用)。
java -version
# 輸出應包含 "OpenJDK Runtime Environment" 或 "Java(TM) SE Runtime Environment"
# 且版本符合預期 (如 17.0.x)
# PyCharm 內部驗證
Help → About → Build # → JDK: 17.x.x (應顯示正確路徑)
| 誤區 | 正確做法 |
|---|---|
只安裝 JRE (openjdk-17-jre) | PyCharm 需 JDK (含 javac、tools.jar),請安裝 -jdk 套件 |
JAVA_HOME 指向 /usr/bin/java (符號連結) | 需指向 JDK **根目錄** (含 bin/, lib/, include/) |
設定 CLASSPATH | 現代 Java 不需要,反而易出錯,**請勿設定** |
修改 /etc/environment | 不支援變數展開 ($JAVA_HOME 會變成字面字串),請用 /etc/profile.d/ |
核心心法:「PyCharm 找 JDK 靠三環境變數 + vmoptions,裝 JDK 要 -jdk 別裝 -jre,路徑指根目錄別指連結」。
Linux mydumper 報錯 libmysqlclient_16 not defined 解決:LD_LIBRARY_PATH 引入 MySQL 函式庫路徑
Linux 刪除檔案但磁碟空間未釋放?lsof 定位進程持有、在線清空日誌實戰
Linux 命令列下載 GOG 遊戲:LGOGDownloader 安裝與使用指南
diff 指令檔案比較全攻略:正常/並排/統一格式、忽略空白/大小寫、目錄遞迴、產生補丁、版本控制基礎
Ubuntu 13.10 啟用 VLC 桌面通知:LibNotify 外掛設定完整步驟
解決 Ubuntu 無法掛載 exFAT 格式 USB 隨身碟問題
Linux 交換空間完整管理指南:規劃、配置、調優與監控實戰
RedHat yum 提示 Unable to read consumer identity?改用 CentOS 鏡像源免註冊安裝軟體