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