例如有两个jar包
my-jar.jar(main入口包)
lib-jar.jar(依赖包)
方法一:不借助MANIFEST文件
java -classpath jar1:jar2:jar3…… mainClassName
中间的jar是jar包路径。mainClassName是main方法所在的类名
方法二:借助MANIFEST文件
想办法在my-jar.jar中添加MANIFEST.MF文件,内容参考下面这样:
Main-Class: yjmyzz.runnable.jar.DemoApp
Class-Path: my-lib.jar
至于如何在打包里,自动添加MANIFEST.MF文件,则添加如下代码
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<!-- 此处指定main方法入口的class -->
<mainClass>main.java.Pachong</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
方法三:借助spring-boot插件
执行maven install,就会在target文件夹下,生成两个文件my-jar.jar以及my-jar.jar.original
这个original文件,其实就是一个普通的jar包,其中的MANIFEST.MF并没有什么实质性内容,只是一个空壳
直接运行java -jar my-jar.jar就可以运行
来源:https://www.cnblogs.com/yjmyzz/p/executable-jar.html