WSO2 MessageBroker:充当发布者时引发javax.naming.NoInitialContextException错误

WSO2 MessageBroker:充当发布者时引发javax.naming.NoInitialContextException错误,java,wso2esb,wso2carbon,Java,Wso2esb,Wso2carbon,我必须访问WSO2主题才能从我的终端发布数据。所以我创建了一个客户机,但在运行时遇到以下异常 javax.naming.NoInitialContextException: Cannot instantiate class: org.wso2.andes.jndi.PropertiesFileInitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.wso2.andes.jndi.Properti

我必须访问WSO2主题才能从我的终端发布数据。所以我创建了一个客户机,但在运行时遇到以下异常

javax.naming.NoInitialContextException: Cannot instantiate class: org.wso2.andes.jndi.PropertiesFileInitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.wso2.andes.jndi.PropertiesFileInitialContextFactory]
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:674)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
at javax.naming.InitialContext.init(InitialContext.java:242)
at javax.naming.InitialContext.<init>(InitialContext.java:216)
at client.Class1.setTopic(Class1.java:53)
at client.Class1.main(Class1.java:25)
Caused by: java.lang.ClassNotFoundException: org.wso2.andes.jndi.PropertiesFileInitialContextFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:72)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:61)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:671)
... 5 more

这种情况下的问题是什么。我只添加了javax.jms.jar文件作为外部jar。我必须添加WSO2特定罐吗

看起来类路径中可能没有客户端JAR。您可以在/client libHi@RaviU中找到客户机jar。我的java程序中是否需要MB客户端JAR?我只有jms还不够吗?NVM让它开始工作了。是的,问题是我没有所需的库:)看起来类路径中可能没有客户机JAR。您可以在/client libHi@RaviU中找到客户机jar。我的java程序中是否需要MB客户端JAR?我只有jms还不够吗?NVM让它开始工作了。是的,问题是我没有必要的库:)
    public static  void setTopic(String args) {
        //topic name
        String topicName = "Org_Hierarchy";

        //propertice object
        Properties properties = new Properties();

        //topic connection object
        TopicConnection topicConnection = null;

        //put connection factory in propertice 
        properties.put("java.naming.factory.initial",
                "org.wso2.andes.jndi.PropertiesFileInitialContextFactory");

        //connection string
        String connectionString = "amqp://admin:admin@clientID/carbon?brokerlist='some IP goes here'";



       //put connection string on propertice 
       properties.put("connectionfactory.TopicConnectionFactory", connectionString);

        try {
            // initialize the required connection factories
            InitialContext ctx = new InitialContext(properties);

            //get topic connection factory 
            TopicConnectionFactory topicConnectionFactory =
                    (TopicConnectionFactory) ctx.lookup("topic");

            //get a connection from factory        
            topicConnection = topicConnectionFactory.createTopicConnection();

            //create session from factory
            TopicSession topicSession =
                    topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);

            // create or use the topic
            Topic topic = topicSession.createTopic(topicName);
            TopicPublisher topicPublisher = topicSession.createPublisher(topic);
            TextMessage textMessage =
                    topicSession.createTextMessage(args);

            // publish the message
            topicPublisher.publish(textMessage);
            topicPublisher.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

}