我是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
答案 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)
我通过
解决了签名问题的废话答案 2 :(得分:0)
我删除了旧的sqljdbc jar,并使用了最新的jar。它解决了我的问题