编程语言
首页 > 编程语言> > java – 无法安装本地构建的eclipse插件,获取“读取签名内容时出错”

java – 无法安装本地构建的eclipse插件,获取“读取签名内容时出错”

作者:互联网

我继承了一个较大的Eclipse插件代码库,它使用Maven Tycho构建.完整版本会为插件生成更新站点.

我已经通过运行测试实例并指定要加载的插件成功测试了插件,但我现在正尝试从本地构建的更新站点“正常”安装插件.在更新站点条目中,我在update-site目标文件夹中指定了zip文件的路径.它能够显示更新站点中存在的功能列表(仅一个).我检查了一下然后继续它已通过许可证批准并开始安装,但随后失败了:

An error occurred during the org.eclipse.equinox.internal.p2.engine.phases.CheckTrust phase.
session context was:(profile=_home_opnfv_eclipse_java-neon_eclipse, phase=org.eclipse.equinox.internal.p2.engine.phases.CheckTrust, operand=, action=).
Error reading signed content.
error in opening zip file

从.metadata / .log文件中,有以下不足为奇的堆栈跟踪(摘录):

!ENTRY org.eclipse.equinox.p2.engine 4 4 2016-02-10 18:22:49.495
!MESSAGE An error occurred during the org.eclipse.equinox.internal.p2.engine.phases.CheckTrust phase.
!SUBENTRY 1 org.eclipse.equinox.p2.engine 4 0 2016-02-10 18:22:49.495
!MESSAGE session context was:(profile=_home_opnfv_eclipse_java-neon_eclipse, phase=org.eclipse.equinox.internal.p2.engine.phases.CheckTrust, operand=, action=).
!SUBENTRY 1 org.eclipse.equinox.p2.engine 4 0 2016-02-10 18:22:49.495
!MESSAGE Error reading signed content.
!STACK 0
java.util.zip.ZipException: error in opening zip file
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(ZipFile.java:219)
    at java.util.zip.ZipFile.<init>(ZipFile.java:149)
    at java.util.zip.ZipFile.<init>(ZipFile.java:163)
    at org.eclipse.osgi.internal.signedcontent.SignedBundleHook.getSignedContent(SignedBundleHook.java:209)
    at org.eclipse.equinox.internal.p2.engine.phases.CertificateChecker.checkCertificates(CertificateChecker.java:73)

在寻找其他事件时,我发现了似乎与此相关的各种问题,但没有具体的问题.我发现一些人没有提出未经证实的建议来删除Eclipse发行版中的所有“artifacts.xml”文件.由于我没有任何其他建议,我尝试了(首先将它们保存在tar文件中),然后重新启动Eclipse,然后重新安装,但这没有任何效果.

我不知道这是抱怨的WHICH zip文件.我想这不是主要的更新网站zip.我查看了“target / repository”中存在的所有jar文件,但都没有签名.我不清楚他们应该是谁.据我所知,此应用程序的构建过程应该是生成有效的更新站点.

我能提供哪些其他信息可以说明这一点?

更新:

当我在Eclipse中创建更新站点条目时,我尝试通过选择“Local”而不是“Archive”从等式中删除一个zip文件,而不是选择“target / .zip”,我选择了“target / repository”,它具有与zip文件相同的内容.不幸的是,这没有任何区别.同样的错误.

更新:

我不知道这是否重要,但我注意到当Eclipse试图安装插件时,它会显示看似无害的“安装详细信息”页面,其中列出了要安装的插件,但我偶然注意到这个插件下面list是“Size:”标签,其上的值是“0字节”.这是重要的,如果是这样,那表明了什么?

更新:

将调试器连接到目标实例后,我发现损坏的jar是“$HOME / .p2 / pool / plugins / org.eclipse.emf.mapping_2.9.0.v20160201-0859.jar”.此文件长度不为零,但“jar”和“unzip”报告文件已损坏.我发现了另外四个有类似问题的“org.eclipse.emf.*”罐子,p2回购中的所有其他罐子都没问题.

现在我知道哪些文件已损坏,我该怎么办呢?我尝试将损坏的jar文件移动到另一个位置(并仔细记录信息),然后重新启动Eclipse并重新安装插件.它仍然在“CheckTrust”阶段出现错误,但这次它报告了丢失的jar文件的完整路径.

我该如何修复这些文件?我是否必须在网上找到它们的有效副本?

(我已经提交了一个错误报告,在原始异常报告中添加了损坏的zip文件的完整路径.)

解决方法:

最终发生的是由于某种原因,我的“$HOME / .p2 / pool”树中的五个jar文件以某种方式被破坏了.几周前我的虚拟机磁盘空间不足时,可能会发生这种情况.我修复了磁盘空间问题,但Eclipse可能无法在此期间完全写入内容.

我在尝试安装插件时收到的异常消息很遗憾没有提到WHAT存档文件已损坏.在此过程中,我为缺陷异常消息提交了以下错误报告:https://bugs.eclipse.org/bugs/show_bug.cgi?id=487954.有人在同一天热情地检查了这个问题(显然已被多次击中).

在确定哪些存档文件已损坏后,我不得不以某种方式修复这些文件.此存储库与本地Maven存储库不同,您可以在其中删除损坏的文件并让下一个Maven构建版本恢复它们.

我在SO上发布了这个特定问题:How can I repair a damaged eclipse $HOME/.p2 repository?,以及Eclipse平台论坛:https://www.eclipse.org/forums/index.php/m/1723920/#msg_1723920.

Eike Stepper让我了解了“Oomph”的一些功能,这是新Eclipse安装程序的核心.有一个非常容易使用的“捆绑池分析”功能,可以自动查找此池中已损坏的归档,并为您提供自动修复它们的操作.这可以从Eclipse中的“Oomph”首选项以及新Eclipse安装程序中的“高级模式”中获得.

我差不多两周都在努力解决这一系列问题,现在终于解决了.

标签:java,eclipse,maven,eclipse-plugin,tycho
来源: https://codeday.me/bug/20190628/1312804.html