jar包中没有主清单属性,JAVA打包操作中出现的问题,解决方法。

案例:

需求修改web项目中的数据库地址。

解压。

360,ZIP什么的都可以。

修改:

。。。 vim工具等

打包(重点):

这里可能会出现很多问题:

方法一:

# 打包当前文件夹
 jar -cvf xxx.jar ./

方法二:

当存在MANIFEST.MF问题:

jar包中没有主清单属性

MANIFEST中包含有启动信息,但是jar命令默认不会使用原来的MANIFEST,如果想使用原来的,使用下面的命令:

jar -cvfm xxx.jar ./META-INF/MANIFEST.MF ./

如果想自定义,就修改MANIFEST.MF中的Main-Class属性。

例如:

格式:Main-Class: 包名 类名 
本例:Main-Class: org.springframework.boot.loader.JarLauncher

方法三:

有时候,你需要对springboot打包的jar或war进行替换或者增加时,使用方法一,方法二,会出现

It has been compressed and nested jar files must be stored without compression的错误

如果有源码工程,就使用源码重新编译,如果没有就采用下面的方式。

1、直接打成非压缩的包。

解压jar或war包,进入项目。

jar -cvfM0 xxx.jar ./*

缺点:未压缩的可能比较大。

2、或者使用springboot的spring-boot-maven-plugin插件重新打包。

如果本机有maven的环境,打开pom.xml文件,将里面的dependencies全删除

,只保留build再在pom.xml当前目录下新建target目录,在target目录里再将新建你要打包的jar或war的相同名字的目录名,然后将jar或war中的所有文件解压到该目录下,将需要增加或修改的jar也覆盖到lib中,整个目录结构如下:

repackage 
    - pom.xml 
    - target 
        - myapp 
            - META-INF 
            - WEB-INF 
            - index.html

然后在windows操作系统下使用cmd命令进入黑窗口,cd到repackage目录。

运行:

mvn package

这样就在target下生成对应的jar或war包了。

 

你可能感兴趣的:(jar包中没有主清单属性,JAVA打包操作中出现的问题,解决方法。)