2017-05-04 12 views
0

メッセージを送信するQpidクライアントを作成しています。私が使用していますサンプルコードは次のとおりです。クラスをインスタンス化できません:org.apache.qpid.jndi.PropertiesFileInitialContextFactory

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();                 
} 

添付configがある:私は取得しています

java.naming.factory.initial = org.apache.qpid.jndi.PropertiesFileInitialContextFactory 
connectionfactory.qpidConnectionFactory = amqp://guest:[email protected]/?brokerlist='tcp://localhost:61111' 
queue.myqueue = queue1 

ERRORは次のようになります。初期化できませんように

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 

が見えますPropertiesファイルのコンテキスト

私はActiveMQインスタンスをポート61111でローカルに実行しています。プロパティファイルは実際に私のCLASSPATHにあります。他に何が私はここで行方不明になることができる?

+0

を試してみてください? – Stultuske

+0

私のIDEが苦情を申し立てた唯一のライブラリは 'java.jmx。*'でした。だから私はそれらを追加しました。 –

+1

どのQpid JMSクライアントを使用していますか?これは古いクライアントであり、最新の公式Qpid JMSクライアントではありません。http://qpid.apache.org/components/jms/index.html –

答えて

0

はあなたのlibフォルダに正しくすべての必要なライブラリを持っていますjava.naming.factory.initial = org.apache.qpid.jms.jndi.JmsInitialContextFactory

関連する問題