千家信息网

jar打包命令使用的方法

发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,jar打包命令使用的方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。今天老版本项目出了个bug,当时svn上没有打分支,于是反编译
千家信息网最后更新 2024年11月18日jar打包命令使用的方法

jar打包命令使用的方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

今天老版本项目出了个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.jarException 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 PC201608251with 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 active: dev2017-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 hierarchy2017-05-09 10:09:03 INFO  [background-preinit] org.hibernate.validator.internal.util.Version.:30 - HV000001: Hibernate Validator 5.2.4.Final

关于jar打包命令使用的方法问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

0