一个可直接运行的jar包,命令格式为
java -jar xxx.jar
要想直接运行一个jar包
需要在jar包中的META-INF/MANIFEST.MF中满足:
1、指定Main-Class项,这样才能确定程序的入口(启动引导
类)在哪里;
2、要能加载到依赖包,即指定Class-Path项。
一般,一个可执行的jar文件unzip后,可以看到由3部分组成
1、META-INF/MANIFEST.MF
2、应用程序编译后的类文件
3、所有依赖的jar包
如一个可执行的简单的spring boot web项目,它的主清单文件内容为
[root@localhost jar]# cat META-INF/MANIFEST.MF
Manifest-Version: 1.0
Class-Path: jul-to-slf4j-1.7.30.jarjakarta.validation-api-2.0.2.jar spr
ing-jcl-5.2.6.RELEASE.jarjakarta.annotation-api-1.3.5.jar spring-boot-
autoconfigure-2.2.7.RELEASE.jartomcat-embed-el-9.0.34.jar spring-boot-
starter-web-2.2.7.RELEASE.jarjackson-core-2.10.4.jar spring-beans-5.2.
6.RELEASE.jarspring-boot-starter-validation-2.2.7.RELEASE.jar spring-e
xpression-5.2.6.RELEASE.jarspring-boot-starter-logging-2.2.7.RELEASE.j
artomcat-embed-core-9.0.34.jar logback-core-1.2.3.jar spring-context-5
.2.6.RELEASE.jarjackson-datatype-jsr310-2.10.4.jar log4j-api-2.12.1.ja
rspring-webmvc-5.2.6.RELEASE.jar jboss-logging-3.4.1.Final.jar classma
te-1.5.1.jarsnakeyaml-1.25.jar jackson-annotations-2.10.4.jar spring-b
oot-starter-json-2.2.7.RELEASE.jarhibernate-validator-6.0.19.Final.jar
jackson-module-parameter-names-2.10.4.jar spring-boot-starter-2.2.7.RE
LEASE.jarjackson-datatype-jdk8-2.10.4.jar spring-aop-5.2.6.RELEASE.jar
spring-web-5.2.6.RELEASE.jar jackson-databind-2.10.4.jar spring-boot-2
.2.7.RELEASE.jar log4j-to-slf4j-2.12.1.jarslf4j-api-1.7.30.jar spring-
core-5.2.6.RELEASE.jartomcat-embed-websocket-9.0.34.jar spring-boot-st
arter-tomcat-2.2.7.RELEASE.jarlogback-classic-1.2.3.jar
Main-Class:com.dangdang.springboot.springbootdemo.SpringbootdemoApplica
tion