2011-07-19 49 views
1

我使用JavaMail API在servicemix下發送帶有附件的電子郵件。我使用的作品單機相同的代碼,我也得到一個奇怪的例外:使用JavaMail API在servicemix下發送電子郵件時發生ClassCastException

異常在線程「池六線-5」 java.lang.ClassCastException: com.sun.mail在 org.apache.servicemix.specs.activation.OsgiMailcapCommandMap.createDataContentHandler(OSG iMailcapCommandMap.java:60)

.handlers.multipart_mixed我已經嘗試了很多花樣,包括進口包裝的com.sun的。郵件處理程序在捆綁定義和那些描述in this thread

該項目是Java 1.5的代碼由JDK 1.5上運行,FuseESB 4.2

- 編輯 -

問題是由weblogic.jar中裝入ServiceMix的,它提供的mailcap的自己造成的副本以及來自java郵件API和激活的其他文件,通過META_INF公開。

+0

你正在獲得的班級的班級名稱是什麼? – JustinKSU

+0

我試圖解決這個問題,但本地不能。無論出於何種原因,即使在Java SE 6中,我也無法使MimeMultipart正常工作。我甚至嘗試過使用和不使用Sun/Oracle的activation.jar。有興趣知道別人說的是什麼作品。 –

回答

0

這聽起來像是一個衝突的類案例。

ab.jar具有AB類

cd.jar還具有AB類

然後將應用程序與類路徑,包括ab.jar和cd.jar運行。 Java從ab.jar加載Class AB,但實際上要加載的正確Class是來自cd.jar的AB。

也許你可以嘗試搜索衝突類的jar文件。如果您使用的是Eclipse,可以輕鬆完成。將所有jar添加到項目的構建路徑中,然後按下:CTRL + SHIFT + T(打開類型的快捷方式),鍵入:multipart_mixed,查看有多少個jar包含它。

還可能與java運行時庫中的activation.jar衝突。

+0

只要在classpath的兩個jar中有相同的類,不會導致ClassCastException。 –

+0

如果ab.jar中的AB和cd.jar中的AB具有完全相同的包名稱但代碼版本不同,則可能會導致ClassCastException。 – 2011-07-20 02:48:51

+0

不,它不能。如果這些類由不同的類加載器加載,則只能在兩個具有相同名稱的類之間獲得CCE。 –

相關問題