我正在使用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:该错误可能是由于在库中创建与类同名的类引起的。