Sto provando un progetto per la scuola che utilizza JMS e ActiveMQ.Eccezione JMS e ActiveMQ
Ho copiato il blocco di codice dai libri di O'Reilly "Java Message Service 2nd Edition Jun 2009". Utilizza il metodo di pubblicazione e sottoscrizione ed è in effetti una piccola chat in cui tutti gli utenti connessi all'argomento possono inviare messaggi a tutti e tutti possono vedere i messaggi di tutti gli altri. Compilo il programma e tutto è ok, provo a farlo funzionare e mi dà la seguente eccezione:
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]
ho trovato che questo problema potrebbe essere a causa di 2 motivi:
- activemq-all -5.2.0.jar non viene aggiunto a classpath.
MA ha aggiunto il classpath (EnvironmentVariables-> selezionare ClassPath-> Modifica e aggiungere quanto segue: "D: \ Programming \ JMS \ ActiveMQ \ apache-activemq-5.2.0" (QUESTO È COME LO AGGIUNGI NO?!? !) file di jndi.properties non è definito correttamente o non è stato aggiunto al classpath
ma mi ha creato e ha aggiunto che è la cartella al classpath Ecco cosa 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
Qual è il problema? Ho cercato per anni di farlo funzionare. Sto facendo qualcosa di sbagliato? :(
Il percorso del file jndi.properties è importante? o deve solo essere collocato in classpath e da qui può essere trovato?
Inoltre ho fatto funzionare l'activemq.bat dalla cartella bin D: \ Programmazione \ JMS \ ActiveMQ \ apache-5.2.0-activemq \ bin \
[Edit] --------- ------------ Quindi funziona in Eclipse, MA Ora ho aggiunto correttamente il file .jar nelle variabili di ambiente e ho eseguito il client dal cmd di Windows. Non dà errori, quando scrivo in console di Eclipse, appare in console cmd, tutto ok, ma quando provo a scrivere in cmd dà un errore in questa linea:
publisher.publish(message);
e dice
java.lang.NoSuchMethodError: org.apache.activemq.ActiveMQMessageProducerSupport.getDestination()Ljavax/jms/Destination;
Qualche idea? Mi piacerebbe davvero essere in grado di eseguirlo in CMD. :(
--------------------- [/ Modifica]
Hoooooly merda. Funziona in Eclipse. Alla fine: ((. Mi fa venir voglia di piangere, non hai idea di quanto tempo ho sprecato con questo. Grazie mille – AndreiBogdan
Puoi guardarmi da Modifica? Se potessi aiutarmi ancora una volta sarebbe eccellente. :) – AndreiBogdan
@AndreiBogdan vedere il mio aggiornamento e fornire maggiori dettagli se si ottiene ancora l'errore. – Eugene