#java
#java
Вопрос:
Я пытаюсь реализовать Pub-Sub, используя пакеты в org.eclipse.paho.client.mqttv3-1.2.0.jar
Ниже приведен код подписчика:
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttTopic;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import java.net.*;
public class Subscriber {
//public static final String BROKER_URL = "tcp://iot.eclipse.org:1883";
public static final String BROKER_URL = "tcp://localhost:1883";
private MqttClient client;
String topic = "Demo Topic";
public static void main(String[] args) {
System.out.println("MQTT Broker: " BROKER_URL);
new Subscriber();
}
public Subscriber() {
String clientId = getMacAddress() "-sub";
System.out.println("Client ID = " clientId);
try {
client = new MqttClient(BROKER_URL, clientId);
client.connect();
client.setCallback(new SubscribeCallback());
client.subscribe(topic);
} catch (MqttException e) {
e.printStackTrace(); System.exit(1);
}
}
public byte[] getMacAddress(){
byte[] mac = new byte[6];
try{
InetAddress address = InetAddress.getLocalHost();
NetworkInterface nwi = NetworkInterface.getByInetAddress(address);
mac = nwi.getHardwareAddress();
System.out.println(mac);
} catch(Exception e) {
System.out.println(e);
}
return mac;
}
}
class SubscribeCallback implements MqttCallback {
@Override
public void connectionLost (Throwable cause) { }
@Override
public void messageArrived (String topic, MqttMessage message) {
System.out.println("Message arrived. Topic: " topic
" Message: " message.toString());
if ("I'm gone".equals(topic)) {
System.out.println("Sensor gone!");
}
}
@Override
public void deliveryComplete (IMqttDeliveryToken token) { }
}
Я создал файл .class, выполнив следующую команду ниже
javac -cp org.eclipse.paho.client.mqttv3-1.2.0.jar Subscriber.java
Файл класса был создан без каких-либо ошибок. Затем я попытался запустить класс Subscriber с помощью
java -cp org.eclipse.paho.client.mqttv3-1.2.0.jar Subscriber
Я получаю исключение класса, не найденное для подписчика
Error: Could not find or load main class Subscriber
Caused by: java.lang.ClassNotFoundException: Subscriber
Примечание: Оба subscriber.java и org.eclipse.paho.client.mqttv3-1.2.0.jar находятся в том же каталоге
Ответ №1:
Вам также необходимо добавить текущий каталог в путь к классу
java -cp .:org.eclipse.paho.client.mqttv3-1.2.0.jar Subscriber
Измените :
на ;
, если выполняется в Windows.