首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Mail 郵件發送常見錯誤:NoClassDefFoundError 解決方案

     編輯:Java 相關知識

問題現象

執行 Java Mail 發送郵件代碼時拋出異常:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

根因分析

類路徑下存在多個版本的 mail.jar,導致類加載衝突。常見場景:MyEclipse 自帶的 Java EE 5 Libraries/javaee.jar 內部包含舊版 mail 包,與項目引入的新版 javax.mail.jar 衝突,類加載器優先加載舊版類,缺少新版 API 導致 NoClassDefFoundError。

解決方案:移除 MyEclipse 內置舊版 mail 包

  1. 定位文件:X:\Program Files\MyEclipse10\Common\plugins\com.genuitec.eclipse.j2eedt.core_10.5.0.me201207171805\data\libraryset\EE_5\javaee.jar
  2. 使用壓縮軟體(如 WinRAR/7-Zip)打開 javaee.jar
  3. 刪除其中的 mail 目錄及相關類文件
  4. 保存並重啟 IDE

javaee.jar 結構

刪除 mail 目錄

確認刪除

保存結果

最佳實踐建議

  • 使用 Maven/Gradle 管理依賴,避免 IDE 內置庫干擾
  • 明確聲明 javax.mail:javax.mail-api 與 com.sun.mail:javax.mail 版本
  • 排除傳遞性依賴中的舊版 mail.jar
  • 運行時指定 -Djava.endorsed.dirs 或模塊路徑控制類加載優先級

核心原則:確保類路徑中同一類僅存在一個版本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved