CentOS 上啟動 Eclipse 報錯 Failed to load the JNI shared library "/home/.../jre/lib/i386/client/libjvm.so",實為 SELinux 安全上下文錯誤導致 JVM 共享庫載入失敗。本文提供 SELinux 禁用與標籤修復兩種方案。
Failed to load the JNI shared library
"/home/java2000_wl/jdk/jdk1.6.0_41/bin/../jre/lib/i386/client/libjvm.so"
file libjvm.so 顯示正常 ELF 共享庫user_home_t vs textrel_shlib_t/lib_t) 禁止執行記憶體映射sudo vim /etc/selinux/config
# 修改:
SELINUX=disabled
# SELINUXTYPE=targeted
必須重開機生效:reboot
# 1. 檢查當前標籤
ls -Z /home/java2000_wl/jdk/jdk1.6.0_41/jre/lib/i386/client/libjvm.so
# 輸出: unconfined_u:object_r:user_home_t:s0
# 2. 修正為共享庫標籤
sudo semanage fcontext -a -t textrel_shlib_t "/home/java2000_wl/jdk(/.*)?"
sudo restorecon -Rv /home/java2000_wl/jdk
# 3. 驗證
ls -Z /home/java2000_wl/jdk/jdk1.6.0_41/jre/lib/i386/client/libjvm.so
# 應顯示: ...:object_r:textrel_shlib_t:s0
# 允許執行記憶體映射
setsebool -P allow_execmem on
setsebool -P allow_execmod on
# 查看相關布林值
getsebool -a | grep -i exec
# 重新啟動 Eclipse
./eclipse
# 應正常啟動工作區選擇視窗
mmap(PROT_WRITE|PROT_EXEC))deny_execmem 預設禁止此行為yum install java-1.8.0-openjdk-devel) 已正確標籤,第三方 JDK 手動解壓需手動修正java-11-openjdk-devel、java-17-openjdk-devel)/opt/jdk- 並套用 semanage fcontext 規則SELINUX=permissive 記錄違規不阻擋,定期 ausearch -m avc 分析Eclipse Installer 或 flatpak install flathub org.eclipse.JavaIDESELinux 非敵人,而是守護者。正確配置標籤與布林值,即可同時擁有企業級安全性與應用相容性。