簡體   English   中英

獲取javax.mail.MessagingException

[英]getting javax.mail.MessagingException

我正在使用javax.mail .jar文件讀取郵件。 但是當我運行代碼時,我得到以下異常。

我在classpath中添加了mail.jar。

Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/MessagingE
xception
Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: MasterProcess.  Program will exit.

解決這個問題的任何建議請...

在eclipse中而不是在命令行中工作清楚地表明項目中存在多個版本的mail jar。

例如:

您有3個罐,罐X,罐Y和罐Z。

不知不覺中,您可能已經知道JAR X可能已經捆綁在JAR Z中(在這種情況下,為郵件罐,但版本有所不同)。

那么,擁有多個版本的同一jar會有什么問題呢? 您有兩個不同的版本,並且您將不知道將在項目中引用哪個版本。 (因此,如果您在項目中的mail-2.jar中尋找某個類,那么如果類加載器對mail-1.jar進行了引用,則會導致找不到類異常)

那么它如何在Eclipse上正常工作? 在eclipse中,您可以看到有一個ORDER庫選項,這些庫將以相同的順序被引用,但是在命令提示符下運行時,我們曾使用過as as lib / *來加載所有要收集的as / lib,我們將不知道哪個lib將首先加載。

如何確定問題的根源並解決問題?

選項1 :

請參閱您正在使用的庫的文檔頁面/用戶指南,以了解它們所包含的內容。

選項2:

  1. 在eclipse中,按類路徑順序將有問題的JAR(此處為mail.jar)移至TOP。 (您的程序現在應該可以運行)
  2. 現在,逐個降低訂單,以查看錯誤的出處。 (如果您希望找到引起此問題的罐子,請重復參考)

  3. 提取具有重復引用的jar,刪除JAR中的重復項並將其重新打包。 (如果需要的話)

您沒有得到MessagingException ,VM抱怨說它找不到 MessagingException (盡管可能是因為它想拋出它而正在尋找它,但這是以后要解決的問題)。

檢查您的mail.jar是否實際上包含此類,並檢查您的mail.jar是否確實在類路徑上。

可能發生的最后一件事是該類與您的Java版本不兼容。 例如,為1.5編譯的類不能在1.4上運行。

另外,請確保您還擁有Java Activation.jar jar。

您是否有機會與App Server(例如Jboss)一起使用,如果是,只需檢查類加載模型(在具有單個類加載模型的jboss中,您可能正在加載最新版本的jars)

我也遇到了同樣的錯誤。 我碰巧在編譯時我正確地使用了罐子。 在命令行上運行它時,我注意到其中沒有包括mail.jar(javamail API)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM