2014-01-25 116 views
3

我試圖在Tomcat 7和Eclipse Kepler上使用Javamail 1.5.1。Javamail 1.5.1,Tomcat 7和java.lang.ClassNotFoundException:javax.mail.Authenticator

當我嘗試發送一封電子郵件,Tomcat的與下面的錯誤炸燬......

從文檔,我明白一切,我現在需要的是在javax.mail.jar內。我已經在webapp的WEB-INF/lib文件夾中找到了。

我認爲這是抱怨,它無法找到javax.mail.Authenticator。但是我已經證實這個班是在一個罐子裏。

這應該很容易。有人能指出我缺少的東西嗎?

我也添加了jar作爲一個庫的日食偏好。

另外...我在哪裏得到下載的javadoc,所以我可以添加到eclipse呢?即我可以將鼠標懸停在單詞上並獲取文檔?

感謝

java.lang.NoClassDefFoundError: javax/mail/Authenticator 
org.apache.naming.factory.MailSessionFactory.getObjectInstance(MailSessionFactory.java:106) 
org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:143) 
javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321) 
org.apache.naming.NamingContext.lookup(NamingContext.java:843) 
org.apache.naming.NamingContext.lookup(NamingContext.java:154) 
org.apache.naming.NamingContext.lookup(NamingContext.java:831) 
org.apache.naming.NamingContext.lookup(NamingContext.java:168) 
util.SendEmails.<init>(SendEmails.java:47) 
... 
+0

您需要在構建設置中將其作爲外部jar添加。大多數人在錯誤的標籤中添加這個。它不是顯示JVM的標籤,而是兩個標籤。我沒有在這臺機器上進行eclipse驗證,但應該在同一首選項窗格中。 – Freddy

+0

我很確定我已經有了。但是還是不行。 – PrecisionPete

+0

我不認爲這是圖書館的問題。我認爲它涉及到JNDI。我做了十幾種不同的變化 - 包括你提到的。但它仍然無法找到Authenticator - 這在罐子裏是確定的。我已經浪費了至少6個小時與此戰鬥...... – PrecisionPete

回答

2

我有完全一樣的問題,我加入了Java郵件罐子到Tomcat的lib目錄解決了這個問題。

我在想這個錯誤的原因是,在JNDI查找期間,來自webapp本身的類沒有加載,所以爲了使JNDI工作,您需要將jar直接提供給tomcat,而不是你的web應用程序。

0

很容易忘記將Tomcat的lib中的jar添加到Tomcats classpath中。 Project - > Run As - > Run Configurations - > YourServer - > Classpath選項卡。這有助於我的情況。僅僅將文件複製到tomcat的lib文件夾中是不夠的。