Invalid signature file digest for Manifest main attributes

当使用Maven构建项目并遇到执行jar包时提示'InvalidsignaturefiledigestforManifestmainattributes'错误,可能原因是依赖重复导致的签名文件冲突。解决方案包括手动删除META-INF中的签名文件或者在maven-shade-plugin中配置排除这些文件。通过配置maven-shade-plugin的filter,可以排除*.SF, *.DSA, *.RSA文件,并指定mainClass,确保jar包正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

maven项目使用加密工具类引入了一些依赖后,打jar包并执行jar包出现Invalid signature file digest for Manifest main attributes的错误

网上找的资料说是由于有些依赖中重复引用了某个包,以至于打包之后的META-INF的目录下多出了一些*.SF,.DSA,.RSA文件所致,可手动删除这些问题后,再执行jar包

通过java指令执行jar包,提示Invalid signature file digest for Manifest main attributes

解决方案1:(手动删除文件)

在这里插入图片描述
通过压缩软件查看程序生成的jar包,可以看到META文件下有.SF,.DSA结尾的文件,手动删除后,再查看该目录下MANIFEST.MF文件中是否有指定要运行的main方法路径,不存在则手动添加,修改后保存,即可正常执行jar包

方案二:maven中使用打包插件排除(推荐)

在这里插入图片描述

<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-shade-plugin</artifactId>
			<version>3.2.1</version>
			<executions>
				<execution>
					<phase>package</phase>
					<goals>
						<goal>shade</goal>
					</goals>
					<configuration>
						<transformers>
							<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
								<mainClass>com.ctid.kms.report.transform.TransformMain</mainClass>
                            </transformer>
                        </transformers>
						<filters>
							<filter>
								<artifact>*:*</artifact>
								<excludes>
									<exclude>module-info.class</exclude>
									<exclude>META-INF/*.SF</exclude>
									<exclude>META-INF/*.DSA</exclude>
									<exclude>META-INF/*.RSA</exclude>
								</excludes>
							</filter>
						</filters>
					</configuration>
				</execution>
			</executions>
</plugin>

低版本的maven-shade-plugin在配置filter artifact时会报 No artifact matching filter 错误,不能排除指定的文件

具体原因不知,或许是低版本语法不同,有知道的可以告知一下,我这里使用3.2.1 版本,打jar包后,查看程序META-INF目录已经不再生成 *.SF等文件,jar包也可正常运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值