ClassnotFound 异常

问题描述 投票:0回答:1

我正在尝试通过 AWS SES 邮件服务添加我的 Spring Boot 应用程序。根据教程,我在 pom 文件中添加了以下 depediciers。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-aws</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-ses</artifactId>
    <version>1.11.505</version>
</dependency>

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
</dependency>

当我在 Spring Boot 应用程序中运行以下配置时,出现以下错误。我找不到原因。是不是依赖问题。

Caused by: java.lang.NoClassDefFoundError: javax/mail/MessagingException
    at com.xr.crosscheck.config.SESConfig.javaMailSender(SESConfig.java:38) ~[classes/:na]
    at com.xr.crosscheck.config.SESConfig$$SpringCGLIB$$0.CGLIB$javaMailSender$1(<generated>) ~[classes/:na]
    at com.xr.crosscheck.config.SESConfig$$SpringCGLIB$$FastClass$$1.invoke(<generated>) ~[classes/:na]
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258) ~[spring-core-6.1.2.jar:6.1.2]
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-6.1.2.jar:6.1.2]
    at com.xr.crosscheck.config.SESConfig$$SpringCGLIB$$0.javaMailSender(<generated>) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:140) ~[spring-beans-6.1.2.jar:6.1.2]
    ... 67 common frames omitted
Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[na:na]
    ... 78 common frames omitted

在我的配置文件中,我尝试获取 AWS 和 JavaMailSender 的 bean,但发生了上述错误。我的配置文件是,

@Configuration
public class SESConfig {

    @Value("${cloud.aws.credentials.access-key}")
    private String accessKey;

    @Value("${cloud.aws.credentials.secret-key}")
    private String secretKey;

    @Value("${cloud.aws.region.static}")
    private String region;

    @Bean
    public AmazonSimpleEmailService amazonSimpleEmailService() {
        BasicAWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
        return AmazonSimpleEmailServiceClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(credentials))
                .withRegion(Regions.EU_CENTRAL_1)
                .build();
    }
    
    @Bean
    public JavaMailSender javaMailSender(AmazonSimpleEmailService amazonSimpleEmailService) {
        return new SimpleEmailServiceJavaMailSender(amazonSimpleEmailService);
    }
}

任何建议都可能有助于解决发生这种情况的原因。

spring-boot amazon-ses
1个回答
0
投票

尝试在 pom.xml 文件中添加此依赖项:

<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>javax.mail-api</artifactId>
  <version>1.6.2</version>
</dependency>
© www.soinside.com 2019 - 2024. All rights reserved.