Java安全例外无效的SHA1 Jar文件

时间:2014-01-30 08:16:00

标签: java sql-server eclipse jar sha1

我是Java环境的新手。执行Jar文件后我遇到了问题。 我正在使用Eclipse KEPLER进行Java编程。我使用File->Export ->Runnable Jar file导出了我的项目。 jar文件已创建。当我使用Java-jar文件名启动jar时。在罐子里,我得到了一些错误,我已经附加到这些问题上了。我看了这个invalid SHA1 signature file digest并尝试了同样的方法。我仍然遇到了这个问题。

Error : Exception in thread "main" java.lang.SecurityException:invalid SHA1 Signature file digest for com/microsoft/sqlserver/jdbc/SQLServerException.class

3 个答案:

答案 0 :(得分:6)

错误意味着类路径中的一个JAR文件包含一个MANIFEST.MF,其中包含com / microsoft / sqlserver / jdbc / SQLServerException.class的条目,并且其中的SHA1校验和不匹配。

要检查的第一件事是JAR没有腐败。既然您可以从Eclipse内部运行项目,那么它们似乎没问题。

离开导出的JAR。我的猜测是出口过程留下了垃圾。打开它(JAR存档是ZIP存档,因此任何ZIP工具都可以工作)并查找MANIFEST.MF文件。

其中一个包含上述条目。找到它后,将其与原始JAR中的版本进行比较。它们必须完全相同。

[编辑] 选项"将所需的库提取到生成的JAR"有一个错误:它在MANIFEST.MF中留下签名。这里的问题是签名取决于清单的完全内容。如果即使单个位在任何地方发生变化,签名也会损坏。这是设计使然:否则,攻击者可以修改代码。

尝试"将所需的库打包到生成的JAR"。

如果这不起作用,则必须使用最后一个选项。传递可执行项目时,请确保包含JAR和子文件夹。

答案 1 :(得分:1)

我通过

解决了签名问题的废话
  • 解压缩sqljdbc41.jar(使用WinZip)删除所有Name对: SHA1-Digest:在MANIFEST.MF
  • 删除MSFTSIG.RSA,MSFTSIG.SF
  • 重新打包sqljdbc41.jar(使用WinZip)

答案 2 :(得分:0)

我删除了旧的sqljdbc jar,并使用了最新的jar。它解决了我的问题