目录
报错分析
错误信息表明,JAR 文件 (
medical-patient-server-3.6.4.jar
) 中缺少主清单属性 (Manifest Main Attribute)。主清单属性用于指示 Java 虚拟机 (JVM) 应该执行哪个类人话:大概率是打包依赖配置错误,导致 MANIFEST.MF 中找不到Start-Class与Start-Classz的值,即找不到启动类。
我们所打的JAR包中的
MANIFEST.MF
文件内容应该 包含有 如下:
Start-Class: com.medical.MedicalPhysicianApplication(我的包结构,因人而异)Start-Class: org.springframework.boot.loader.JarLauncher
①Start-Class含义:用于指定 Spring Boot 的启动类。②Main-Class含义:用于指定启动 Spring Boot JAR 的主类。
人话:得有这俩东西才能找到启动类。
一、验证
MANIFEST.MF
文件内容
①解压jar包:jar xf XXX(改你的jar包路径)
②查看META-INF内的MANIFEST.MF 文件包含的内容
jar xf medical-modules/medical-patient/medical-patient-server/target/medical-patient-server-3.6.4.jar cat META-INF/MANIFEST.MF
可以看到,jar包中没有Start-Class与Start-Classz的值
二、如何解决?
在当前项目的pom.xml文件加入打包命令(位于project下级)<build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
打包依赖导入成功后,重复上面步骤进行验证!!
可以见到,在我们导入打包依赖后已经有了我们想要的值。
三、重新部署服务器jar包
1.接下来去服务器删除原有的jar包,将新生成的jar包上传到服务器
2.java -jar XXX.jar 重新启动 哇,启动成功!
四、结语
希望这篇文章能解决你的问题,也谢谢你的关注,拜拜~