Eclipse Mqtt paho 抛出 java.lang.SecurityException:清单主要属性的签名文件



我正在使用mqtt作为客户端从 mqtt 代理获取消息。 以前我有 0.2.1,它在 clientId 生成中存在问题(超过 23 个字符会失败)

我看到修复在更高版本中完成,所以我升级到 1.0.1。我从下面的存储库下载了 1.0.1 jar

eclipse repo [/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.client.mqttv3/1.0.1/]

我得到:Invalid signature file digest for Manifest main attribute

我用谷歌搜索并找到了解决问题的解决方案。我删除了 META-INF 并再次压缩了罐子。它暂时解决了我的问题。但据我所知,这不应该这样做。

我发现了其他没有帮助的修复程序,例如将以下配置放在我的pom中。

<pre>
    <exclude>META-INF/*.SF</exclude>
    <exclude>META-INF/*.DSA</exclude>
    <exclude>META-INF/*.RSA</exclude>
</pre>

后来我跑jarsigner -verify org.eclipse.paho.client.mqttv3-1.0.1.jar

我得到了以下内容:

jar verified.
Warning: 
This jar contains entries whose signer certificate will expire within six months. 

签署者证书将在 6 个月后过期。

不确定我是否应该下载同一个 jar。

Eclipse packages as and puts osgi bundles in their maven repo.
This is how I made it work:
  • 从 Eclipse repo 下载 MQTT JAR & POM https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.client.mqttv3/
  • 下载其所有依赖项
  • 解开罐
  • 来自元信息/清单。MF 删除除前 3 行之外的所有行
    清单版本:1.0 捆绑包本地化:捆绑包捆绑包要求执行环境:J2SE-1.4 
    • 删除 META-INF 文件夹中的证书
    • 现在将所有未被 jar 的文件 jar 到相同的 jar 名称
    • 上传到您的 maven 存储库
我知道

我迟到了,但我能够通过重命名包含所有 MQTT 内容的.class文件来解决问题。我最初把它命名为MQTTListener。当我将其重命名MQTTCommunicationModule(我知道新名称不是很好,只是为了验证我的怀疑)的那一刻,错误消失了。

我的猜测是我给这个类指定了与导致冲突的 MQTT 库中的类相同的名称。

TL;DR:该错误可能是由于在库中创建与类同名的类引起的。

最新更新