Gradle构建失败:主类名称尚未配置,无法解析

时间:2019-07-02 23:45:42

标签: spring gradle

我正在按照this指南使用Spring构建RESTful Web服务。我正在使用grable来构建应用程序,但是构建失败。

我在Windows 10计算机上使用了“ build gradle”命令。

这是gradle代码:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.1.6.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

bootJar {
    baseName = 'gs-rest-service'
    version =  '0.1.0'
}

repositories {
    mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

我遇到以下错误:

任务':bootJar'的执行失败。

  

主类名称尚未配置,无法解析

6 个答案:

答案 0 :(得分:6)

当我使用kotlin并放错main方法时遇到了这个错误。

错误:

@SpringBootApplication
class Application {
    fun main(args: Array<String>) {
        runApplication<Application>(*args)
    }
}

修复(将mainApplication中移出):

@SpringBootApplication
class Application

fun main(args: Array<String>) {
    runApplication<Application>(*args)
}

答案 1 :(得分:1)

如@Zaziro所述,可以定义配置。

此站点很好地描述了不同类型的配置:https://www.baeldung.com/spring-boot-main-class#gradle

如果您正在使用科特琳:

请注意您的班级名称已更改。您需要在mainClassName后面附加“ Kt”。

示例:“ com.example.Application”->“ com.example.Application Kt

答案 2 :(得分:0)

尝试将您的项目与complete version进行比较。 也许问题不在gradle文件中,但是您错过了代码中的某些内容。 您还可以添加有关此错误的其他信息-使用stacktrace开关运行gradle

答案 3 :(得分:0)

因此,您可以对其进行配置。请尝试:

apply plugin: 'application'
mainClassName = 'com.example.WebApplication'

答案 4 :(得分:0)

在我的情况下,(使用Kotlin for writing springboot demo)是由src文件夹引起的,主类文件未位于src / main文件夹下。 此外,我已经清理了所有内容并重新启动IDE。 正如@Zaziro所提到的,我也尝试过一次,但是没有任何运气。 但是有些文章提到config mainClassName

与Github中的src代码进行比较之后,发现它与任何软件包的任何版本都没有关系。

祝你好运:-)

答案 5 :(得分:0)

我试图按照 https://spring.io/guides/gs/spring-boot/ 中的说明进行操作,该说明在应用程序中有一个 CommandLineRunner。 CommandLineRunner 中的代码只有在我将该 bean 包装在类中的 main 方法时才会运行。我可以运行测试,但不能通过命令行。我能够通过使用伴随对象来解决这个问题:

@SpringBootApplication
class TestApplication {

    companion object {
        @JvmStatic
        fun main(args: Array<String>) {
            runApplication<TestApplication>(*args)
        }
    }

    @Bean
    fun commandLineRunner(ctx: ApplicationContext): CommandLineRunner {
        ...
    }
}