Spring Boot可执行文件-主应用程序类

时间:2019-11-12 16:06:43

标签: spring-boot gradle jar

下面是我的build.gradle-我没有在https://start.spring.io/生成的样板代码上编写任何Java代码-我的问题是,我分解了在分发文件夹下生成的tar文件并运行了可执行jar (使用可在分发文件夹中找到的脚本),我得到主应用程序类的classnotfound异常:

错误:找不到或加载主类com.itreatmd.emr.emrServices.EmrServicesApplication 引起原因:java.lang.ClassNotFoundException:com.itreatmd.emr.emrServices.EmrServicesApplication

我查看了lib文件夹,并在其中找到了我的胖子罐。如果我炸开胖子以搜索主要应用程序类,则会发现它列出为: BOOT-INF / classes / com / itreatmd / emr / emrServices / EmrServicesApplication.class

但是,我没有看到任何spring boot loader类。在脂肪罐中。

我想我需要修改build.gradle来解决此问题,但是我找不到解决方法。

    plugins {
            id 'org.springframework.boot' version '2.2.2.BUILD-SNAPSHOT'
            id 'io.spring.dependency-management' version '1.0.8.RELEASE'
            id 'java'
            id 'distribution'
            id 'application'
    }

    group = 'com.itreatmd.emr'
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = '11'

    mainClassName = 'com.itreatmd.emr.emrServices.EmrServicesApplication'
    repositories {
            mavenCentral()
            maven { url 'https://repo.spring.io/milestone' }
            maven { url 'https://repo.spring.io/snapshot' }
    }

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-loader'
    implementation 'org.springframework.boot:spring-boot-starter-jersey'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
}    
    bootJar {
        manifest {
            attributes 'Implementation-Title': 'Gradle Quickstart',
                       'Implementation-Version': version,
                       'Main-Class': 'com.itreatmd.emr.emrServices.EmrServicesApplication'
        }
    }
    test {
            useJUnitPlatform()
    }

1 个答案:

答案 0 :(得分:0)

我的问题的答案是,在最新的SprintBoot版本中,build / distribution文件夹无用。当我从旧的SpringBoot版本迁移到最新的2.x版本时,我假设我可以继续从build / distribution文件夹内的tar中提取jar,然后继续(在打包和压缩方面,tar有一些优点。分配)。但是,您发现在分发中分解tar时发现的脚本已损坏。因此,只需使用bootScripts下的脚本即可继续。