Исключение JMS и ActiveMQ

Я пробую школьный проект с использованием 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]

Я обнаружил, что эта проблема может быть по двум причинам:

  1. activemq-all-5.2.0.jar - это не добавлен в путь к классам.
    НО добавил путь к классам (EnvironmentVariables-> выберите ClassPath-> Edit и добавьте следующее: "D: \ Programming \ JMS \ ActiveMQ \ apache-activemq-5.2.0" (ЭТО КАК ВЫ ДОБАВИЛИ ЭТО НЕТ?!?!)
  2. Файл 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]

6
задан AndreiBogdan 6 February 2012 в 19:47
поделиться