2016-12-04 8 views
0

SpringMVCを使用して電子メールを送信しようとしています。 Bean JavaMailSenderを作成してエラーが発生しました。SpringMVCはメールを送信します

@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 SEVERE [RMI TCP接続(31)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContextコンテキストの初期化に失敗しました java.lang.NoClassDefFoundErrorが:ORG/springframework /メール/ JavaMailの/ JavaMailSender

このBeanと私のコンテキスト:

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の下で動作しているWebアプリですか?コマンドラインアプリは 'java ...'で始まっていますか?他に何か? – mangotang

+0

はIntelijIDEAからTomCatで始まります – Pal

答えて

0

あなたのクラスパスにはが必要ですが表示されません。

これをIntelliJのアプリケーションのクラスパスに追加するには、プロジェクトのProject Structureを編集し、LibraryをSpringのjarファイルを参照してLibrariesの下に追加します。 Moduleを追加または編集し、Moduleにライブラリを追加します。 Artifactsを追加または編集し、ライブラリまたはモジュールがArtifactAvailable Elementsのいずれかであることを確認します。 Runメニューの下

Deploy at server startupリストにアーティファクト(またはライブラリ)を追加し、Deploymentタブで、あなたのTomcatの設定のためのEdit Configurationsをクリックします。

This information at JetBrainsは、クラスパス上で目的のjarを取得するための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 jarを取得する必要があります。

関連する問題