【问题标题】:AWS Beanstalk + Kotlin + Spring boot: NoSuchMethodException main()AWS Beanstalk + Kotlin + Spring 启动:NoSuchMethodException main()
【发布时间】:2022-11-08 18:14:49
【问题描述】:

我有一个用 Kotlin 编写的 Spring Boot 应用程序,已部署到 AWS Beanstalk,它引发以下异常:

Exception in thread "main" java.lang.NoSuchMethodException: com.prototype.demo.DemoApplication.main([Ljava.lang.String;)
at java.base/java.lang.Class.getDeclaredMethod(Class.java:2675)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:47)

在本地,当我从 IntelliJ 运行应用程序时,我没有任何问题。 我的项目中有spring-boot-maven-pluginkotlin-maven-plugin

关于可能导致问题的任何想法?我之前用 Java 构建了一个类似的应用程序,但没有遇到这个问题。

感谢您的专业知识和时间。


更新:值得注意的是,我必须在我的 POM 的属性中设置以下行,以便在开发期间使 IntelliJ 可执行项目(我已经忘记了):<start-class>com.prototype.demo.DemoApplication</start-class>

现在我已将其删除,并且在运行 jar 文件时出现不同的错误。我会花一些时间来看看这是否相关,并相应地更新问题。 谢谢!

【问题讨论】:

  • 您是否尝试过在本地而不是通过 IDE 运行 jar?
  • 我已经通过 java -jar xxx.jar 运行它,并且遇到了与在 AWS 上看到的相同的错误。这是什么意思?为什么会发生? IntelliJ 做了什么来使它工作我不知道?
  • @OneCricketeer,您的评论为我指明了正确的方向,非常感谢。

标签: java spring-boot kotlin amazon-elastic-beanstalk


【解决方案1】:

这个问题是由我的 POM 文件中声明的以下属性引起的:<start-class>com.prototype.demo.DemoApplication</start-class>。 一旦我删除它并将open 关键字添加到Configuration 注释类和DemoApplication(包含main 的类),它终于起作用了。

【讨论】:

    【解决方案2】:

    build.gradle.kts 的解决方案

    在将我的应用程序部署到 ECS 时,我遇到了同样的问题。

    第一件事:

    当您在 AWS 日志中看到此类错误时 -> 按照问题作者所做的那样做并在本地测试问题。很可能如果应用程序在 AWS 上失败,它也会在您的本地机器上失败。为此,您在本地构建一个jar,jar文件通常保存在build/libs/application-x.x.x-SNAPSHOT.jar并运行java -jar application-x.x.x-SNAPSHOT.jar

    现在,您可以在再次部署之前修复您的构建任务并在本地对其进行测试。

    修复 Gradle:我的主要方法是在MyApplication.kt 文件中定义的,但是在 gradle 的主类的定义中,我必须设置以下内容:

    tasks.getByName<org.springframework.boot.gradle.tasks.bundling.BootJar>("bootJar") {
        mainClass.set("com.company.app.MyApplicationKt")
    }
    

    通知:我的应用程序千吨

    这是我必须解决的唯一问题才能解决此问题。

    【讨论】:

      猜你喜欢
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 2019-08-01
      • 2012-08-07
      • 2014-07-07
      • 2018-03-26
      • 2021-06-23
      相关资源
      最近更新 更多