Gradle projet,在heroku上部署期间出现错误NoSuchMethodException
Posted
技术标签:
【中文标题】Gradle projet,在heroku上部署期间出现错误NoSuchMethodException【英文标题】:Gradle projet, error NoSuchMethodException during deployment on heroku 【发布时间】:2021-10-21 20:27:11 【问题描述】:我正在尝试在 heroku 上部署一个带有 gradle 的 Spring Boot 项目。
但是在 Herku 上部署期间,当应用程序尝试启动时,我收到以下错误:
2021-08-20T07:22:42.904392+00:00 heroku[web.1]: Starting process with command `java -Dserver.port=42904 $JAVA_OPTS -jar build/libs/api-gateway-0.0.1-SNAPSHOT.jar`
2021-08-20T07:22:44.675657+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them.
2021-08-20T07:22:44.679643+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -XX:+UseContainerSupport -Xmx300m -Xss512k -XX:CICompilerCount=2 -Dfile.encoding=UTF-8
2021-08-20T07:22:44.990415+00:00 app[web.1]: Exception in thread "main" java.lang.NoSuchMethodException: com.abade.apigateway.ApiApplication.main([Ljava.lang.String;)
2021-08-20T07:22:44.990713+00:00 app[web.1]: at java.base/java.lang.Class.getDeclaredMethod(Class.java:2475)
2021-08-20T07:22:44.990742+00:00 app[web.1]: at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:47)
2021-08-20T07:22:44.990803+00:00 app[web.1]: at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
2021-08-20T07:22:44.990841+00:00 app[web.1]: at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
2021-08-20T07:22:44.990880+00:00 app[web.1]: at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
2021-08-20T07:22:45.062399+00:00 heroku[web.1]: Process exited with status 1
当我没有指定 gradle 中的主类和 Procfile 中的 jar 时,我得到一个错误:没有主清单属性。
这是我的 Procfile :
web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/api-gateway-0.0.1-SNAPSHOT.jar
还有我的 build.gradle:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins
id("org.springframework.boot") version "2.5.3"
id("io.spring.dependency-management") version "1.0.11.RELEASE"
kotlin("jvm") version "1.4.32"
kotlin("plugin.spring") version "1.4.32"
group = "com.abade"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_11
repositories
mavenCentral()
dependencies
implementation("org.springframework.boot:spring-boot-starter-data-mongodb")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("com.google.firebase:firebase-admin:8.0.0")
implementation("junit:junit:4.13.1")
implementation("org.modelmapper:modelmapper:2.3.3")
implementation ("io.springfox:springfox-boot-starter:3.0.0")
runtimeOnly("com.h2database:h2")
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("org.mockito:mockito-core:3.+")
tasks.withType<KotlinCompile>
kotlinOptions
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "11"
tasks.withType<Test>
useJUnitPlatform()
springBoot
mainClass.set("com.abade.apigateway.ApiApplication")
您有什么建议吗?
【问题讨论】:
【参考方案1】:它试图告诉你,com.abade.apigateway.ApiApplication
缺少方法 main([Ljava.lang.String;)
...因此主要入口点是未知的。
【讨论】:
当然可以,但是解决这个问题的解决方案是什么?该应用程序在本地运行良好 @PierrickCompois 你如何在本地运行它?gradle bootRun
?
@jannis 我正在使用 IntelliJ 启动,但您解决了我的问题,gradle bootRun 无法正常工作,所以我修复了它!非常感谢以上是关于Gradle projet,在heroku上部署期间出现错误NoSuchMethodException的主要内容,如果未能解决你的问题,请参考以下文章
Heroku Spring Boot Gradle App 已部署但 App 崩溃
在 Heroku 中部署我的 Gradle (Spring Boot) 应用程序
使用 bitbucket 管道部署到 heroku 的 Spring Boot gradle 项目在 build/libs/app-SNAPSHOT-plain.jar 中给出错误 no main m