Я пытаюсь воспроизвести первый пример Java-издателя, который можно найти на главной странице RabbitMQ.
Во-первых, я сделал это на Java, и он работал нормально. Затем, я попробовал это на Android, и вот где странная часть.
Я добавил вручную те же библиотеки jar, которые я использовал в своей программе Java, и которые предлагаются в учебнике RabbitMQ. То есть, amqp-client-5.4.1
, slf4j-api-1.7.21
и slf4j-simple-1.7.22
добавляются в каталог /libs
а затем ссылаются в buid.gradle(module:app)
с командами implementation files('libs/amqp-client-5.4.1.jar')
и т.д.
Затем я добавил требуемые зависимости пакета в файле MainActivity.java
без каких-либо ошибок. Но при добавлении части кода, который должен публиковать данные, различные методы импортированных библиотек не найдены, например, factory
появляется, поскольку у нее не было метода setHost
.
Я присоединяю следующий код, который я использую сейчас.
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
public class MainActivity extends AppCompatActivity {
String QUEUE_NAME = "hello";
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.0.0.0"); //Marked as error
factory.setUsername("test");
factory.setPassword("test");
Connection connection;
Channel channel;
connection = factory.newConnection();
channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Example3";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println(" [x] Sent '" + message + "'");
channel.close();
connection.close();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Любые идеи о том, почему этот код отлично работает на Java, но эти библиотеки не могут быть правильно импортированы в Android?