Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法实例化类:org.apache.qpid.jndi.PropertiesFileInitialContextFactory_Java_Qpid - Fatal编程技术网

Java 无法实例化类:org.apache.qpid.jndi.PropertiesFileInitialContextFactory

Java 无法实例化类:org.apache.qpid.jndi.PropertiesFileInitialContextFactory,java,qpid,Java,Qpid,我正在编写一个发送消息的Qpid客户端。我使用的示例代码是: private void runTest() throws Exception { Properties properties = new Properties(); properties.load(this.getClass().getResourceAsStream("helloworld.properties")); Context context = new InitialContext(properties);

我正在编写一个发送消息的Qpid客户端。我使用的示例代码是:

private void runTest() throws Exception {
  Properties properties = new Properties();
  properties.load(this.getClass().getResourceAsStream("helloworld.properties")); 
  Context context = new InitialContext(properties);                              

  ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("qpidConnectionFactory");             
  Connection connection = connectionFactory.createConnection();                  
  connection.start();                                                            

  Session session = connection.createSession(true, Session.SESSION_TRANSACTED);  
  Queue queue = (Queue) context.lookup("myqueue");                               

  MessageConsumer messageConsumer = session.createConsumer(queue);               
  MessageProducer messageProducer = session.createProducer(queue);               

  TextMessage message = session.createTextMessage("Hello world!");                
  messageProducer.send(message);
  session.commit();

  message = (TextMessage)messageConsumer.receive();                               
  session.commit();
  System.out.println(message.getText());

  connection.close();                                                             
  context.close();                                                                
}
附带的配置为:

java.naming.factory.initial = org.apache.qpid.jndi.PropertiesFileInitialContextFactory
connectionfactory.qpidConnectionFactory = amqp://guest:guest@clientid/?brokerlist='tcp://localhost:61111'
queue.myqueue = queue1
我得到的错误是:

Exception in thread "main" javax.naming.NoInitialContextException: Cannot instantiate class: org.apache.qpid.jndi.PropertiesFileInitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.apache.qpid.jndi.PropertiesFileInitialContextFactory]
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:674)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
    at javax.naming.InitialContext.init(InitialContext.java:244)
    at javax.naming.InitialContext.<init>(InitialContext.java:216)
    at Hello.runTest(Hello.java:19)
    at Hello.main(Hello.java:13)
Caused by: java.lang.ClassNotFoundException: org.apache.qpid.jndi.PropertiesFileInitialContextFactory
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    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:672)
    ... 5 more
线程“main”javax.naming.NoInitialContextException中的异常:无法实例化类:org.apache.qpid.jndi.PropertiesFileInitialContextFactory[根异常为java.lang.ClassNotFoundException:org.apache.qpid.jndi.PropertiesFileInitialContextFactory] 位于javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:674) 位于javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313) 位于javax.naming.InitialContext.init(InitialContext.java:244) 位于javax.naming.InitialContext。(InitialContext.java:216) 运行测试(Hello.java:19) 在Hello.main(Hello.java:13) 原因:java.lang.ClassNotFoundException:org.apache.qpid.jndi.PropertiesFileInitialContextFactory 位于java.net.URLClassLoader.findClass(URLClassLoader.java:381) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357) 位于java.lang.Class.forName0(本机方法) 位于java.lang.Class.forName(Class.java:348) 位于com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:72) 位于com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:61) 位于javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:672) ... 还有5个 看起来无法初始化属性文件的上下文


我有一个ActiveMQ实例在端口
61111
上本地运行。属性文件确实在我的类路径中。我还能错过什么呢

试试
java.naming.factory.initial=org.apache.qpid.jms.jndi.JmsInitialContextFactory

您的lib文件夹中是否有所有必需的库?我的IDE唯一抱怨的库是
java.jmx.
。所以我添加了它们。您使用的是什么Qpid JMS客户端,这似乎是一个较旧的客户端,而不是最新的官方Qpid JMS客户端: