我正在按照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'的执行失败。
主类名称尚未配置,无法解析
答案 0 :(得分:6)
当我使用kotlin并放错main
方法时遇到了这个错误。
错误:
@SpringBootApplication
class Application {
fun main(args: Array<String>) {
runApplication<Application>(*args)
}
}
修复(将main
从Application
中移出):
@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 {
...
}
}