【问题标题】:Why can I start my application using mvn spring-boot:run while IntelliJ run doen´t work?为什么我可以使用 mvn spring-boot:run 启动我的应用程序,而 IntelliJ run 不起作用?
【发布时间】:2020-11-16 14:43:03
【问题描述】:

当我使用命令 mvn spring-boot:run 时,项目编译并完美启动。但是,当我在 IDE (IntelliJ) 中使用播放按钮时,出现以下错误:

Description:
Parameter 3 of constructor in com.example.module.services.PdfService required a bean of type 'org.springframework.mail.javamail.JavaMailSender' that could not be found. 

这可能是什么原因?我很想使用 IDE 提供的调试和开发工具。

我的尝试:

  • 选择构建->重建项目
  • 单击文件>使缓存无效/重新启动
  • mvn clean -> 构建 -> 制作项目
  • Maven -> 重新导入
  • 检查首选项中没有排除项|构建、执行、部署 |编译器 |排除

我的 pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</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-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

发生错误的服务

@Service
public class PdfService {

private final Logger logger = LoggerFactory.getLogger(PdfService.class);

private PdfCreator pdfCreator;

private ConfigProperties properties;

private ReceiptService receiptService;

private JavaMailSender javaMailSender;

private MessageSourceAccessor messageSourceAccessor;

@Autowired
public PdfService(PdfCreator pdfCreator,
                  ConfigProperties properties,
                  ReceiptService receiptService,
                  JavaMailSender javaMailSender,
                  MessageSourceAccessor messageSourceAccessor) {
    this.pdfCreator = pdfCreator;
    this.properties = properties;
    this.receiptService = receiptService;
    this.javaMailSender = javaMailSender;
    this.messageSourceAccessor = messageSourceAccessor;
}

非常感谢您的帮助。

【问题讨论】:

  • 你检查JavaMailSender是否有@Component注解?
  • 我没有在单独的类中定义 JavaMailSender,因为我认为它将由框架自动定义。
  • 你能添加所有的来源吗?没有看到代码,我们很难分析。
  • @ThangavelLoganathan,我添加了 pom.xml 和发生错误的服务。这有帮助还是您需要任何其他代码?
  • 我认为目前还可以。让我看看。

标签: java spring spring-boot maven intellij-idea


【解决方案1】:

您需要添加 org.springframework.mail.javamail.JavaMailSender.jar 作为依赖项,因为它缺少。您可以按照以下步骤在 intellij 中进行修复。

  1. 下载 jar 文件。
  2. 在 IntelliJ Idea IDE 中,转到文件 > 项目结构。
  3. 选择模块。
  4. 在依赖项部分,选择 (+) 图标 > 选择 JAR 或目录
  5. 将链接粘贴到 JAR 文件的位置
  6. 选择确定并应用

现在,它将被修复。

【讨论】:

  • 就像这里推荐的stackoverflow.com/questions/1367303/… 我将 Spring Context Support 和 Spring Support .jar 文件添加到依赖项中。它仍然无法正常工作..
  • 您能详细说明“仍然无法工作”是什么意思吗?提及错误将帮助任何人更容易找到原因:)
  • 我建议您试用 Thangavel 提供的解决方案。通常,添加模块可以解决我遇到的任何错误。我不知道更多:
【解决方案2】:

您需要创建配置类并使用@Bean 告诉他们容器我刚刚尝试过。它对我有用。

@Configuration
public class AppConfiguration {

    @Bean
    public JavaMailSender javaMailSender(){
        return new JavaMailSenderImpl();
    }

}

请在以下网址查看我的要点,

https://gist.github.com/thangavel-projects/9c30e6fe141755cf471c9d574e7341b2

【讨论】:

  • 嘿@Thangavel Loganathan,非常感谢您的建议,并对我迟到的回答感到抱歉。因此,如果我添加 JavaMailSender-Bean 以便我的配置类出现另一个错误。另外我想知道为什么我在使用 IntelliJ 启动应用程序时只需要这段代码。这是新的错误:java.lang.NullPointerException: null at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:98) ~[na:na] at java.base/sun.nio.fs .WindowsPathParser.parse(WindowsPathParser.java:77) ~[na:na] at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92) ~[na:na]
  • 请阅读bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8133521 "passing a null argument to a constructor or method of any class or interface in this package will cause a NullPointerException to be thrown." 我认为你在Paths.get(null) 中传递null 像这样。
  • 此外,您在此处提出的问题已解决。所以请您接受答案以供其他人参考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
  • 2018-04-20
  • 2020-09-27
  • 2016-04-10
  • 2015-06-21
  • 2021-09-10
相关资源
最近更新 更多