Tomcat由于JavaMail消息而无法启动

时间:2019-06-07 21:38:41

标签: java tomcat javamail

在我添加了一些.jar文件并尝试了一些代码之后,我的Tomcat停止工作了。我试图使用JavaMail发送电子邮件,所以我在线复制了一些代码。在某些方面,我是新手,所以我不太了解发生了什么。我在做什么错了?

在删除这些罐子之后,替换它们,在网上搜索并且感觉到我正在还原为穴居人,我回到了我复制的代码,全部注释,并开始逐行取消注释,然后发现确切的部分正在破坏Tomcat的是“ Message.RecipientType.TO”。最奇怪的部分是Eclipse不会显示任何错误,在我尝试启动服务器之前,一切似乎都可以正常工作。

import com.sun.mail.smtp.*;
import java.util.*;  
import javax.mail.*;
import javax.mail.internet.*;

public class GrabarUsuario extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String to = "someEmail@gmail.com";
    String from = "someOtherEmail@hotmail.com";
    String host = "localhost";

    Properties properties = System.getProperties();  
    properties.setProperty("mail.smtp.host", host);  
    Session session = Session.getDefaultInstance(properties);  

    try{  
        MimeMessage message = new MimeMessage(session);  
        message.setFrom(new InternetAddress(from));
        message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
        message.setSubject("Ping");  
        message.setText("Hello, this is example of sending email  ");  

        // Send message  
        Transport.send(message);  
        System.out.println("message sent successfully....");  

    }catch (MessagingException mex) {mex.printStackTrace();}

}
}

我得到的错误是:

(用西班牙语翻译该行: 嘉年华没有成功的背景: 没有名称的上下文-或与此类加载器关联的名称上下文-或类似的东西-)

  

ADVERTENCIA:无法检索容器的JNDI命名上下文   [StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/ Victorial]]   因此没有对该容器执行任何清理   javax.naming.NamingException:没有任何关联   埃斯特·卡加多尔·德克莱斯   org.apache.naming.ContextBindings.getClassLoader(ContextBindings.java:350)     在   org.apache.catalina.deploy.NamingResources.cleanUp(NamingResources.java:985)     在   org.apache.catalina.deploy.NamingResources.stopInternal(NamingResources.java:968)     在   org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)     在   org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5704)     在   org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)     在   org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:272)     在   org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1041)     在   org.apache.catalina.core.ContainerBase.destroyInternal(ContainerBase.java:1234)     在   org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)     在   org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1041)     在   org.apache.catalina.core.ContainerBase.destroyInternal(ContainerBase.java:1234)     在   org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)     在   org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:593)     在   org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)     在   org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:829)     在   org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)     在org.apache.catalina.startup.Catalina.start(Catalina.java:693)处   sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于   sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)位于   sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)位于   java.lang.reflect.Method.invoke(来源未知)   org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321)在   org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)

1 个答案:

答案 0 :(得分:0)

我将在一个正在运行的项目中添加我正在使用的Maven依赖关系,这可能会有所帮助。该软件包与应用程序一起打包,我不对默认的tomcat安装进行任何更改:

<dependency>
  <groupId>org.apache.geronimo.specs</groupId>
  <artifactId>geronimo-javamail_1.4_spec</artifactId>
  <version>1.7.1</version>
</dependency>
<dependency>
  <groupId>org.apache.geronimo.javamail</groupId>
  <artifactId>geronimo-javamail_1.4_mail</artifactId>
  <version>1.8.4</version>
</dependency>

我已经有一段时间没有更新此应用程序了,因此可能有较新的版本。