Я пробую школьный проект с использованием JMS и ActiveMQ.
Я скопировал блок кода из книги О'Рейли «Java Message Service 2nd Edition Jun 2009». Он использует метод публикации и подписки и, по сути, представляет собой небольшой чат, в котором каждый, подключенный к теме, может отправлять сообщения всем, и каждый может видеть сообщения всех остальных. Я компилирую программу, и все в порядке, я пытаюсь запустить ее, и это дает мне следующее исключение:
Exception in thread "main" javax.naming.NoInitialContextException: Cannot instantiate class: org.apache.activemq.jndi.ActiveMQInitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.apache.activemq.jndi.ActiveMQInitialContextFactory]
Я обнаружил, что эта проблема может быть по двум причинам:
Файл jndi.properties определен неправильно или не был добавлен в путь к классам.
НО Я СОЗДАЛ ЕГО и добавил ее в путь к классам. Вот что он содержит:
java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url = tcp: // локальный: 61616
java.naming.security.principal = система
java.naming.security.credentials = менеджер
connectionFactoryNames = TopicCF
topic.topic1 = jms.topic1
В чем проблема? Я много лет пытался заставить его работать. Я делаю что-то неправильно? : (
Не работает ли jndi.путь к файлу свойств имеет значение? или его нужно только поместить в путь к классам и отсюда его можно найти?
Я также запустил activemq.bat из папки bin D: \ Programming \ JMS \ ActiveMQ \ apache-activemq-5.2.0 \ bin \
[Редактировать] --------------------- Так что это работает в Eclipse, НО Теперь я правильно добавил файл .jar в переменные среды и запустил клиент из cmd Windows. Он не выдает никаких ошибок, когда я пишу в консоли Eclipse, он появляется в консоли cmd, все в порядке, но когда я пытаюсь написать в cmd, он выдает ошибку в этой строке:
publisher.publish(message);
и говорит
java.lang.NoSuchMethodError: org.apache.activemq.ActiveMQMessageProducerSupport.getDestination()Ljavax/jms/Destination;
Any идеи? Я действительно хотел бы иметь возможность запускать его в CMD. : (
--------------------- [/ Edit]