2017-06-06 1 views
0

J'ai des problèmes avec la configuration de JMS. J'ai essayé d'utiliser Active MQ et OpenJMS mais la même erreur se produit. désemparés Iam sur la façon de le résoudre:Contexte d'initialisation avec JMS

Quand j'exécute ceci:

import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.naming.NamingException; 
import java.util.Hashtable; 

public class Main { 
    public static void main(String[] args) throws NamingException { 
     Hashtable properties = new Hashtable(); 

     properties.put(Context.INITIAL_CONTEXT_FACTORY, 
      "org.exolab.jms.jndi.InitialContextFactory"); 
     properties.put(Context.PROVIDER_URL, "tcp://localhost:3035/"); 

     Context context = new InitialContext(properties); 
    } 
} 

Je reçois cette erreur:

Exception in thread "main" javax.naming.NoInitialContextException: Cannot instantiate class: org.exolab.jms.jndi.InitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.exolab.jms.jndi.InitialContextFactory] 

Après quelques googler, je pense que le problème est qu'un pot est pas le bon classpath, mais toutes les réponses supposent déjà que je sais quel pot et où le stocker, mais ce n'est pas le cas ici.

De quel boiteux parle-t-on? Où peux-je le recevoir? Où dois-je le stocker?

Iam utilisant IntelliJ btw. Pourriez-vous me pointer dans la bonne direction?

ActiveMQ travaille (http://localhost:8161/ montre page web de ActiveMQ)

Voici mes étapes sur la façon dont j'ai créé le projet: Fichier -> Nouveau projet -> Java -> SDK1.8 -> Suivant -> Suivant - > Nom du projet: Test -> Clic droit sur le dossier src -> Nouveau -> Java Class -> Nom: Main -> Coller le code ci-dessus -> Exécuter -> Erreur

EDIT: pour toutes les personnes ayant les mêmes erreurs: OpenJMS est livré avec un libfolder. Installez ces bibliothèques et il devrait fonctionner

Répondre

0

Here est une bonne explication sur la façon d'ajouter des pots externes à votre projet IntelliJ, et en ce qui concerne à

Which Jar are they talking about? Where can i get it?

here est un site web utile où vous pouvez rechercher des fichiers jar utiliser des critères comme nom d'une classe ou d'un paquet.

Je pense que le pot dont vous avez besoin est Openjms, voici un link pour le télécharger.

+0

merci pour votre réponse. J'ai dû installer 3 classes manquantes. Maintenant, un problème différent se pose. Je ne sais vraiment pas si c'est vraiment si difficile de faire fonctionner JMS, ou si je ne fais que mal. C'est maintenant l'erreur: Exception dans le fil "principal" javax.naming.NamingException: Impossible de se connecter au fournisseur JNDI [Exception de racine est java.net.ConnectException: Connexion refusée: se connecter] – Loading

+0

@Loading dans votre code essayez de changer '" tcp: // localhost: 3035/"' pour '" tcp: // localhost: 61616/"' qui est l'adresse par défaut d'ActiveMQ ou que vous utilisez le client OpenJMS, essayez d'utiliser le serveur OpenJMS au lieu de celui d'ActiveMQ –

+0

grand merci. Je viens d'installer totalement les mauvais pots. Lors du téléchargement d'openJM, ils vous fournissent une librairie d'appel de dossier. Je ne savais pas que je devais utiliser ceux-ci. – Loading