在linux下出现no main manifest attribute, in xxx.jar 解决办法
<!--markdown-->####问题描述
前几天在开发spring boot程序,在IDE运行没有任何问题,使用mvn package
打包后,生成docker部署到服务器发现了问题。
出现错误信息:
no main manifest attribute,in xxx.jar
其实还有更多信息显示,在命令行使用java -jar xxxx.jar
执行也会提示找不到main函数。那么问题出现在哪里呢?为何main函数明明在Application类中,为何提示找不到呢?
####解答
要想知道问题出现在哪里,我们要从jar配置文件manifest说起。在jar中,有class文件,还有一个结构目录,管理结构目录的就是manifest.xml 配置文件。
manifest通常定义版本,依赖路径和依赖包等等。最重要的是,manifest还定义了main函数的入口,使用java命令后,会解析里面的manifest配置,然后再通过配置找到main函数。
----可以解压manifest后,看到并没有配置main函数。(左边是缺少main函数配置的manifest文件,右边是正确的文件结构):
manifest 文件格式。
####解决的办法
经过网查得知,有两个解决办法:
第一种解决办法:往spring boot的pom文件添加指定的打包插件。我们需要把它补上,插件配置如下:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin>
第二种办法就是启动的时候通过命令行指定main函数入口,语法格式如下:
-jar xxx.jar com.XXX.xxx.className
完毕。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。