2016-12-04 3 views
0

Я пытаюсь отправить электронное письмо с помощью SpringMVC. Я создал компонент JavaMailSender и получаю сообщение об ошибке.SpringMVC Отправить email

@Bean 
public JavaMailSender javaMailSender(){ 
    JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); 
    javaMailSender.setUsername("test"); 
    javaMailSender.setPassword("test"); 
    javaMailSender.setPort(56); 
    javaMailSender.setHost("smtp.test.ru"); 
    return javaMailSender; 
} 

Ошибка:

04-декабря-2016 20: 05: 50,699 СУРОВОЕ [РМ TCP-соединение (31) -127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext инициализация контекста не удалась java.lang.NoClassDefFoundError: орг/springframework/почта/JavaMail/JavaMailSender

Мой контекст с этим боба:

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.PropertySource; 
import org.springframework.mail.javamail.JavaMailSender; 
import org.springframework.mail.javamail.JavaMailSenderImpl; 

import java.util.Properties; 

@Configuration 
@PropertySource("classpath:util.properties") 
@PropertySource(value = {"classpath:auth.properties"}) 
public class MailContext { 
    @Bean 
    public JavaMailSender javaMailSender(){ 
     JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); 
     javaMailSender.setUsername("test"); 
     javaMailSender.setPassword("test"); 
     javaMailSender.setPort(556); 
     javaMailSender.setHost("test.ru"); 
     javaMailSender.setProtocol("smtp"); 
     Properties properties = new Properties(); 
     properties.setProperty("mail.debug", "true"); 
     javaMailSender.setJavaMailProperties(properties); 

     return javaMailSender; 
    } 
} 

Мой пОМ:

... 
<dependency> 
    <groupId>com.sun.mail</groupId> 
    <artifactId>javax.mail</artifactId> 
    <version>1.5.5</version> 
</dependency> 
<dependency> 
    <groupId>javax.activation</groupId> 
    <artifactId>activation</artifactId> 
    <version>1.1.1</version> 
</dependency> 
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support --> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context-support</artifactId> 
    <version>4.3.4.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-mail</artifactId> 
    <version>1.4.2.RELEASE</version> 
</dependency> 
... 

Что я сделал не так?

+0

Как подать заявку? Это веб-приложение под управлением Tomcat? Приложение командной строки запускается с помощью 'java ...'? Что-то другое? – mangotang

+0

начать с IntelijIDEA с помощью TomCat – Pal

ответ

0

Похоже, что вам нужно, но у вас нет spring-context-support-4.3.4.RELEASE.jar на вашем пути к классу.

Чтобы добавить это в свой путь к классу приложений в IntelliJ, отредактируйте Project Structure вашего проекта и добавьте Library под номером Libraries, ссылаясь на файл Spring Jar. Добавьте или отредактируйте Module и добавьте библиотеку в Module. Добавьте или отредактируйте Artifacts и убедитесь, что библиотека или модуль является одним из Available Elements для Artifact.

В меню Run нажмите Edit Configurations для конфигурации Tomcat, на вкладке Deployment, добавьте артефакт (или библиотеку) в Deploy at server startup списке.

This information at JetBrains содержит дополнительную информацию о настройке вашей установки Intellij, чтобы получить нужные банки на пути к классу.

Также возможно, что вам нужно сделать простое изменение конфигурации вашей зависимости в вашем pom.xml: (. Обратите внимание на добавление <scope> элемента More information on Maven scopes available here.)

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context-support</artifactId> 
    <version>4.3.4.RELEASE</version> 
    <scope>runtime</scope> 
</dependency> 

(Эти инструкции могут различаться в зависимости от версии Intellij, которую вы используете.)

Таким образом, вам нужно получить банку Spring на пути к классу приложения во время выполнения.

Смежные вопросы