如何将MQTT Paho导入Java“游乐场”?

时间:2019-12-13 04:54:42

标签: java mqtt paho

目标:Java通过code playground控制台发布MQTT消息。在将指令移植到Android Studio之前,操场用于证明功能。

在操场上重现错误消息

单击指向code playground的链接后,单击“运行”按钮以重现该错误。

错误消息

为什么要在代码游乐场中添加导入语句?:

import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;

导致失败:

./Playground/Playground.java:4: error: package org.eclipse.paho.client.mqttv3 does not exist
                import org.eclipse.paho.client.mqttv3.MqttClient;
                                                     ^
./Playground/Playground.java:5: error: package org.eclipse.paho.client.mqttv3 does not exist
        import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
                                             ^
./Playground/Playground.java:6: error: package org.eclipse.paho.client.mqttv3 does not exist
        import org.eclipse.paho.client.mqttv3.MqttException;
                                             ^
./Playground/Playground.java:7: error: package org.eclipse.paho.client.mqttv3 does not exist
        import org.eclipse.paho.client.mqttv3.MqttMessage;
                                             ^
./Playground/Playground.java:8: error: package org.eclipse.paho.client.mqttv3.persist does not exist
        import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
                                                     ^
5 errors

问题

  • 为什么找不到资源?
  • 如何克服障碍? (替代品?)

1 个答案:

答案 0 :(得分:2)

tl; dr-这可能永远无法工作

Paho Java库不包含在Java SDK的默认类中。这就是所谓的第三方库。

它作为一个jar文件提供,您需要将其添加到要与其一起使用的任何Java运行时的类路径中。

有数十万个此类库,每个库都提供不同的额外功能,这些功能扩展了默认的标准类集,并且在不同的发行版本中也可用。

代码游乐场的管理员不可能事先知道用户可能想要尝试哪些库,仅在类顶部包含导入语句并不能完全识别您所使用的库版本卑鄙的。

虽然像Maven这样的系统提供了一种以标准方式查找和下载这些库的方法,但它仍然不适合此类环境,并且无法涵盖您可能想要的每个库。

即使操场上确实有一种方法可以指定第三方库,这也会带来巨大的安全问题,因为他们无法控制现在将在其计算机上运行的代码。我希望这些代码段已经在安全管理器下运行,该安全管理器可防止访问Internet和本地文件系统。这将阻止您连接到代理。