2016-12-07 105 views
0

我刚刚刚刚启动了一个Spring Boot的新项目,我正在试图解决这个问题。我正在使用Spring Tool Suite,它为我创建了一个Spring Boot项目并加载了一些依赖关系,我知道我需要更多的依赖关系(特别是Spring批处理和弹簧数据)Spring中的ClassNotFoundException JavaMailSenderImpl使用Spring Boot进行JUnit测试

这是我的pom.xml:

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.2.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-batch</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-mail</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <!-- JDBC driver --> 
    <dependency> 
     <groupId>com.microsoft.sqlserver</groupId> 
     <artifactId>mssql-jdbc</artifactId> 
     <version>6.1.0.jre8</version> 
    </dependency> 
</dependencies> 

我一直在阅读的参考文档和知道我会在某个时候了线需要的邮件,所以我说这我application.properties文件:

spring.mail.host=my.mail.host 

然后我试着使用构建应用程序但它在测试中抛出一个错误。测试包括以下内容:

package its.idcard.batch; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.boot.test.context.SpringBootTest; 
import org.springframework.test.context.junit4.SpringRunner; 

@RunWith(SpringRunner.class) 
@SpringBootTest 
public class IdCardBatchApplicationTests { 

    @Test 
    public void contextLoads() { 
    } 

} 

因此,所有它做的是试图加载应用程序上下文,但它无法与org.springframework.mail.javamail.JavaMailSenderImpl一个ClassNotFoundException。

我知道这是纯粹的测试问题,因为在添加一些Spring Data的内容并跳过maven中的测试后,我的存根应用程序按预期运行(并查看生成的jar,我可以看到spring -context-support-4.3.4-RELEASE.jar存在,包含有问题的类),所以它似乎是测试中的类路径问题,但我很难过。如果我注释掉属性文件中的spring.mail.host行,测试运行没有问题。

任何想法将不胜感激。

+0

您将需要添加'javax.mail'依赖项。尝试使用此 \t \t \t javax.mail \t \t \t 邮件 \t \t \t 1.4.7 \t \t

+0

已经包含在'弹簧引导起动mail'依赖所以不需要再添加它。 –

+0

请注意,[当前版本的JavaMail是1.5.6](https://java.net/projects/javamail/pages/Home)。 –

回答

0

我认为我刚刚在我的Maven仓库中出现了腐败的jar文件的问题。我决定在我的配置类中手动创建MailSender bean,以查看是否有帮助,但Eclipse将该类标记为未找到,即使包含它的jar包存在maven依赖项中。然后我从命令行尝试mvn compile,这给了我一个更有用的错误,指示了损坏的jar,所以我从我的本地存储库中删除了违规的jar,并让maven重新下载它们,现在我不再在上面的配置。

希望这可以帮助别人。