Estoy intentando un proyecto para la escuela usando JMS y ActiveMQ.Excepción JMS y ActiveMQ
He copiado el bloque de código de los libros de O'Reilly "Java Message Service 2nd Edition Jun 2009". Utiliza el método de publicar y suscribir, y de hecho es un chat pequeño donde todos los que están conectados al tema pueden enviar mensajes a todos y todos pueden ver los mensajes de los demás. Puedo compilar el programa y todo está bien, trato de ejecutarlo y me da la siguiente excepción:
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]
He encontrado que este problema puede ser debido a 2 razones:
- activemq-todo -5.2.0.jar no se agrega a classpath.
PERO lo agregó el classpath (EnvironmentVariables-> select ClassPath-> Edit y agrega lo siguiente: "D: \ Programming \ JMS \ ActiveMQ \ apache-activemq-5.2.0" (ESTO ES CÓMO LO AÑADE NO?!? !) archivo jndi.properties no está definido correctamente o no se ha añadido a la ruta de clase
pero yo lo creó y ha añadido que es la carpeta a la ruta de clase Aquí es lo que contiene:..java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory java.naming.provider.url = tcp://localhost:61616 java.naming.security.principal=system java.naming.security.credentials=manager connectionFactoryNames = TopicCF topic.topic1 = jms.topic1
¿Cuál es el problema? He intentado durante años para que funcione. ¿Estoy haciendo algo mal? :(
¿Importa la ruta del archivo jndi.properties? o solo tiene que ser colocado en classpath y desde aquí se puede encontrar?
También corrió la activemq.bat de la carpeta bin D: \ Programación \ JMS \ ActiveMQ \ apache-activemq-5.2.0 \ bin \
[Editar] --------- ------------ Así que funciona en Eclipse, PERO Ahora he agregado correctamente el archivo .jar en variables de entorno y he ejecutado el cliente desde el cmd de Windows. No da ningún error, cuando escribo en la consola de Eclipse, aparece en la consola cmd, todo bien, pero cuando intento escribir cmd da un error en esta línea:
publisher.publish(message);
y dice
java.lang.NoSuchMethodError: org.apache.activemq.ActiveMQMessageProducerSupport.getDestination()Ljavax/jms/Destination;
¿Alguna idea? Realmente me gustaría poder ejecutarlo en CMD. :(
--------------------- [/ editar]
Hoooooly mierda. Funciona en Eclipse. Por fin: ((. Me hace querer llorar, no tienes idea de cuánto tiempo perdí con esto. Muchas gracias. – AndreiBogdan
¿Podrías mirar por Editar? Si pudieras ayudarme una vez más sería excelente. :) – AndreiBogdan
@AndreiBogdan mira mi actualización y proporciona más detalles si sigues recibiendo el error. – Eugene