Я пытаюсь отправить электронное письмо с использованием JavaMail API. Вот мой код на сервлета:java.lang.NoClassDefFoundError: Не удалось инициализировать класс javax.mail.internet.InternetAddress
package com.lsp.web;
import com.lsp.service.Mailer;
import javax.ejb.EJB;
import javax.mail.MessagingException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "contact", urlPatterns = {"/contact"})
public class ContactServlet extends SpringInjectedServlet {
@EJB
private Mailer emailBean;
@Override
public void init() throws ServletException {
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String customerEmail = req.getParameter("email");
String subject = req.getParameter("subject");
String body = req.getParameter("message");
String error = null;
String succMess = null;
try {
javax.mail.internet.InternetAddress ia = new javax.mail.internet.InternetAddress(customerEmail);
ia.validate();
emailBean.send(customerEmail, subject, body);
req.setAttribute("succMessage", succMess);
req.getRequestDispatcher("sent.jsp").forward(req, resp);
} catch (javax.mail.internet.AddressException ae) {
error = "您指出的邮箱地址不存在";
req.setAttribute("errorMessage", error);
req.getRequestDispatcher("contact.jsp").forward(req, resp);
}
catch (MessagingException mex) {
error = "发送失败";
req.setAttribute("errorMessage", error);
req.getRequestDispatcher("contact.jsp").forward(req, resp);
}
}
}
На линии, где я проверяю адрес пользователя, где:
javax.mail.internet.InternetAddress ia = new javax.mail.internet.InternetAddress(customerEmail);
ia.validate();
я получил исключение. java.lang.NoClassDefFoundError: Не удалось инициализировать учащемуся javax.mail.internet.InternetAddress
В pom.xml, я добавил следующие строки:
<!--JavaMail API-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.1</version>
</dependency>
<!--EJB-->
<dependency>
<groupId>javax.ejb</groupId>
<artifactId>ejb-api</artifactId>
<version>3.0</version>
</dependency>
Я использую Tomcat. Может ли кто-нибудь сказать мне, почему это происходит и как я могу решить проблему.
спасибо.
Кажется, что вам не хватает соответствующих библиотек Java EE. –
Как вы компилируете и запускаете этот код? Вы должны убедиться, что у вас есть все необходимые библиотеки в пути к классам, а не только при компиляции, но и при запуске кода. – Jesper
Как вы создаете и запускаете приложение? Вы используете Maven? Если это так, возможно, это поможет, если вы покажете нам свой файл pom.xml. – andersschuller