欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jar打包命令使用【贼好使】

程序员文章站 2022-04-30 15:50:05
...

今天老版本项目出了个bug,当时svn上没有打分支,于是反编译了一下,找到相应几个要修改的文件,修改后替换进去,发现启动失败(Spring boot项目)提示

Exception in thread "main" java.lang.IllegalStateException: Unable to open nested entry 'BOOT-INF/lib/antlr-2.7.7.jar'.
It has been compressed and nested jar files must be stored without compression. Please check the mechanism used to create your executable jar file
PS E:\pwd0508\b2b-erp> java -jar .\b2b-erp.jar
Exception in thread "main" java.lang.IllegalStateException: Unable to open nested entry 'BOOT-INF/lib/antlr-2.7.7.jar'.
It has been compressed and nested jar files must be stored without compression. Please check the mechanism used to create your executable jar file
        at org.springframework.boot.loader.jar.JarFile.createJarFileFromFileEntry(JarFile.java:285)
        at org.springframework.boot.loader.jar.JarFile.createJarFileFromEntry(JarFile.java:260)
        at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:248)
        at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:237)
        at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:103)
        at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchives(JarFileArchive.java:87)
        at org.springframework.boot.loader.ExecutableArchiveLauncher.getClassPathArchives(ExecutableArchiveLauncher.java:72)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:49)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:58)

提示意思:jar内部依赖的第三方包被压缩了,看提示是spring的Launcher抛出的,应为是自己大的包,没法就看了一下jar命令:

PS E:\pwd0508\b2b-erp> jar
用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
选项:
    -c  创建新档案
    -t  列出档案目录
    -x  从档案中提取指定的 (或所有) 文件
    -u  更新现有档案
    -v  在标准输出中生成详细输出
    -f  指定档案文件名
    -m  包含指定清单文件中的清单信息
    -n  创建新档案后执行 Pack200 规范化
    -e  为捆绑到可执行 jar 文件的独立应用程序
        指定应用程序入口点
    -0  仅存储; 不使用任何 ZIP 压缩
    -P  保留文件名中的前导 '/' (绝对路径) 和 ".." (父目录) 组件
    -M  不创建条目的清单文件
    -i  为指定的 jar 文件生成索引信息
    -C  更改为指定的目录并包含以下文件
如果任何文件为目录, 则对其进行递归处理。
清单文件名, 档案文件名和入口点名称的指定顺序
与 'm', 'f' 和 'e' 标记的指定顺序相同。

示例 1: 将两个类文件归档到一个名为 classes.jar 的档案中:
       jar cvf classes.jar Foo.class Bar.class
示例 2: 使用现有的清单文件 'mymanifest' 并
           将 foo/ 目录中的所有文件归档到 'classes.jar' 中:
       jar cvfm classes.jar mymanifest -C foo/ .

有一个-0的选项,试一下【划重点】

jar -cvf0m b2b-erp.jar .\META-INF\MANIFEST.MF .

打包成功,执行以下,spring boot图标出来了  成功!

PS E:\pwd0508\b2b-erp> java -jar .\b2b-erp.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.4.1.RELEASE)

2017-05-09 10:09:02 INFO  [main] com.qiaomai.erp.Application.logStarting:48 - Starting Application v1.2.0 on PC201608251
with PID 13664 (E:\pwd0508\b2b-erp\b2b-erp.jar started by Administrator in E:\pwd0508\b2b-erp)
2017-05-09 10:09:02 INFO  [main] com.qiaomai.erp.Application.logStartupProfileInfo:665 - The following profiles are acti
ve: dev
2017-05-09 10:09:02 INFO  [main] org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
.prepareRefresh:581 - Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
@5eb5c224: startup date [Tue May 09 10:09:02 CST 2017]; root of context hierarchy
2017-05-09 10:09:03 INFO  [background-preinit] org.hibernate.validator.internal.util.Version.<clinit>:30 - HV000001: Hib
ernate Validator 5.2.4.Final

 

转载于:https://my.oschina.net/airship/blog/3079279