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
推荐阅读
-
AndroidStduio3.0 使用gradle将module打包jar文件的方法
-
使用ionic cordova build android --release --prod命令打包报错解决方法
-
XZ_iOS之使用终端命令行打包
-
python安装exe打包库命令pip install pyinstaller报错,使用pip国内镜像解决方法
-
不使用开发工具将文件或文件夹打包成jar文件
-
14.JAVA-jar命令使用
-
AndroidStduio3.0 使用gradle将module打包jar文件
-
使用webpack命令打包时,报错TypeError: Cannot read property 'presetToOptions' of undefined的解决办法
-
Java jar打包工具使用方法步骤解析
-
AndroidStduio3.0 使用gradle将module打包jar文件的方法