前言
出现这个问题后查了很多资料,都没能解决。包括引入spring-boot-gradle-plugin包,修改springboot版本,修改gradle版本,都没能解决。
正文
主要问题是因为打出来的jar包下 META-INF/MANIFEST.MF 配置里没有主类
在build.gradle最后加上
jar {
manifest {
// 标志主类
attributes 'Main-Class' : 'com.xxx.Main'
}
}
再次打包后看一下,现在 MANIFEST.MF 里已经出现了主类配置
额外报错
运行再次报错,找不到外部引用的Spring包
修改下刚刚写的build.gradle,主类配置后加上Class-Path配置
jar {
manifest {
// 标志主类
attributes 'Main-Class' : 'com.xxx.Main'
// 添加引用的外部包的索引,避免运行时引用不到
// 我这边是把外部包放在libs目录下,根据项目情况修改下面的目录就好
String someString = configurations.compileClasspath.files.collect { "libs/$it.name" }.join(' ')
configurations.runtimeClasspath.each { someString = someString + " libs/" + it.name + ' ' }
attributes 'Class-Path': someString
}
}
再打包看看 MANIFEST.MF, 下面出现了Class-Path 配置,就不贴图了。
把jar包扔上服务器,执行一下。
完美。
项目结构
额外补充
额外补充我看到的解决方法:
build.gradle文件中,补充添加 spring-boot-gradle-plugin
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
buildscript {
...
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:2.3.7.RELEASE")
...
}
}
...
dependencies {
//框架包
...
}
引用自 https://blog.csdn.net/csdnzyb/article/details/115378818