Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-win32-3063 in java.library.path
// 或 Mac: no swt-pi-carbon-3063, Linux: no swt-pi-gtk-3063
原因:JVM 找不到 SWT 所需的原生庫(.dll/.so/.jnilib),版本號對應 Eclipse 版本(3063 = 3.0.1)。
echo %PATH% 確認系統路徑包含 C:\WINNT (或 C:\Windows\System32)。copy "C:\Program Files\eclipse\plugins\org.eclipse.swt.win32_3.0.1\os\win32\x86\*" C:\WINNT
每次升級 Eclipse 後需重複此步驟,因版本號變更導致庫文件名改變。
-Djava.library.path=${eclipse_home}/plugins/org.eclipse.swt.win32_3.0.1/os/win32/x86-Djava.library.path=${eclipse_home}/plugins/org.eclipse.swt.carbon_3.0.1/os/macosx/ppc-Djava.library.path=${eclipse_home}/plugins/org.eclipse.swt.gtk_3.0.1/os/linux/x86| 維度 | 方法一:系統目錄複製 | 方法二:VM 參數指定 |
|---|---|---|
| 適用範圍 | 全局生效,所有 Java 進程可用 | 僅當前啟動配置生效 |
| 維護性 | 升級 Eclipse 需手動重覆 | 可在 Launch Configuration 中持久化,團隊共享 |
| 權限需求 | 需系統目錄寫入權限 | 無特殊權限 |
| 推薦場景 | 個人開發機、快速驗證 | 團隊專案、CI/CD、多版本共存 |
在專案 .classpath 或 Maven/Gradle 建構腳本中配置 -Djava.library.path,實現「專案自帶原生庫路徑」,完全消除環境依賴。
遇到 UnsatisfiedLinkError 先確認:Eclipse 版本、SWT 插件版本、原生庫實際路徑 三者一致。推薦使用方法二(VM 參數),乾淨、可攜帶、易於團隊協作。