2011-09-02 30 views
4

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

我在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. 

任何suggetionsn來解決這個問題,請...

+0

你確定mail.jar在類路徑中嗎?你是如何開始申請的? – Thomas

+0

我通過命令提示符運行: – ramesh

+0

使用命令javac -cp%classpath%Test.java然後java -cp。測試以運行應用程序 – ramesh

回答

1

你沒有得到一個MessagingException,虛擬機是抱怨它不能找到MessagingException(雖然它可能是它在尋找它是因爲它想扔掉它,但這些都是以後的問題)。

檢查您的mail.jar實際上包含了這個類,並檢查您的mail.jar真的是在classpath。

可能發生的最後一件事是,類是與你的Java版本不兼容。例如,爲1.5編譯的類不會在1.4上運行。

+0

是的,我的mail.jar包含MessagingException類。 – ramesh

+0

編輯我的答案給其他的可能性。 –

+1

我使用的是Java 1.6版本,mail.jar是1.4.1。我認爲這個mail.jar與java1.6兼容。 – ramesh

0

還要確保你也有java的的activation.jar罐子。

你是否有機會與一個應用服務器(如Jboss)合作,如果是的話,只需檢查類加載模型(在單一類加載模型的jboss中,你可能正在加載一個不是最新版本的jar )

+0

我沒有使用任何App Server,只是通過命令提示符運行 – ramesh

+0

您是通過腳本運行測試還是使用某個IDE(Eclipse)? Java Mail Api AFAIK只依靠自己的jar和激活框架。當然在Windows用戶正確的CLASSPATH語法下(;作爲分隔符),並確保你實際上可以讀取罐子。也檢查你正在運行正確的java/javac(使用java/javac -version) – BigMike

+0

從eclipse IDE工作正常。但是當我試圖從命令提示符運行我得到這個異常 – ramesh

0

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

1

工作在Eclipse中,而不是在命令行中明確說是有郵件罐子的多個版本存在於該項目。

例:

你有3瓶,罐X,瓶子Y和Z.罐

出你知道JAR X可能已經JARž內捆綁(在這種情況下,郵件罐子但有些不同的版本。

那麼,什麼是具有相同罐子的多個版本的問題? 你有兩個不同的版本,你會不知道,這將在項目中被引用。(所以如果你正在尋找一些類從郵件-2jar在你的項目中,你會得到類沒有f ound異常,如果參考了郵件的1.jar的類加載器)

那麼,如何來正確的基於Eclipse的工作? 在Eclipse中,你可以看到有訂購的圖書館,這些都會以相同的順序引用一個選項,但同時在命令提示符下運行,我們用來加載爲LIB/*,它加載所有收集,我們不會知道該lib將首先被加載。

如何識別的罪魁禍首,並解決這個問題?

選項1:

看你使用的是看他們有什麼他們林達文檔頁/用戶指南。

選項2:

  1. 在Eclipse移動所涉及的JAR(這裏的mail.jar)至TOP的類路徑順序。 (您的程序現在應該可以運行)
  2. 現在逐個調低順序以查看出現錯誤的位置。 (如果你想找到引起這個問題的瓶子,請參考重複)

  3. 提取具有重複引用的JAR,刪除JAR中的副本並重新打包。 (如果需要)

相關問題