当前位置: 首页 > 知识库问答 >
问题:

如何解决线程“main”javax中的异常。命名。NameNotFoundException:未绑定?

逄俊力
2023-03-14

我正在尝试在eclipse中创建jms发布者/订户聊天应用程序。

import java.util.Properties;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.MessageListener;
    import javax.jms.TextMessage;
    import javax.jms.Topic;
    import javax.jms.TopicConnection;
    import javax.jms.TopicConnectionFactory;
    import javax.jms.TopicSession;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    public class TopicConsumer implements MessageListener {
        public static void main(String[] args) throws JMSException, NamingException {
            System.out.println(".....Entering JMS example TopicConsumer....");  
            Context context = TopicConsumer.getInitialContext();
            TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) context.lookup("ConnectionFactory");
            Topic topic = (Topic) context.lookup("topic/zaneacademy_jms_tutorial_01");
            TopicConnection topicConnection = topicConnectionFactory.createTopicConnection();
            TopicSession topicSession = topicConnection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
            topicSession.createSubscriber(topic).setMessageListener(new TopicConsumer());
            topicConnection.start();
            System.out.println("......Exiting JMS Example TopicConsumer.....");
            }
            public void onMessage(Message message) {
                try {
                    System.out.println("Incoming Messages: " + ((TextMessage)message).getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
            public static Context getInitialContext() throws JMSException, NamingException {
                Properties props = new Properties();
                props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
                props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
                props.setProperty("java.naming.provider.url", "localhost:1099");
                Context context = new InitialContext(props);
                return context;
            }
        }

尝试运行程序时,控制台中出现以下错误

.....Entering JMS example TopicConsumer....
Exception in thread "main" javax.naming.NameNotFoundException: zaneacademy_jms_tutorial_01 not bound
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:564)
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:572)
    at org.jnp.server.NamingServer.getObject(NamingServer.java:578)
    at org.jnp.server.NamingServer.lookup(NamingServer.java:317)
    at org.jnp.server.NamingServer.lookup(NamingServer.java:291)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
    at sun.rmi.transport.Transport$1.run(Unknown Source)
    at sun.rmi.transport.Transport$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
    at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
    at sun.rmi.server.UnicastRef.invoke(Unknown Source)
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source)
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source)
    at com.sun.proxy.$Proxy0.lookup(Unknown Source)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:669)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:629)
    at javax.naming.InitialContext.lookup(Unknown Source)
    at TopicConsumer.main(TopicConsumer.java:19)

共有1个答案

昝存
2023-03-14

正如它在例外情况中所说的,zaneacademy\u jms\u tutorial\u 01没有定义。您需要对其进行配置并将其分配给主题/zaneacademy\u jms\u教程\u 01

我想说的是,问题在于您手动配置的getInitialContext(),而不是通过new InitialContext()返回可能已经配置的上下文

 类似资料:
  • 我正在开发一个使用tomcat服务器管理的连接池的spring应用程序。 我在上下文中的标记中定义了数据源。tomcat的xml:(我在上下文中使用Spring2.0.7)。xml: 在我的应用程序上下文中。xml(即在spring配置文件中),代码为: 当应用程序启动时,出现以下错误: 请帮我解决这个问题。

  • 问题内容: 我在Java程序上遇到问题。线程“主”中的异常 是我得到的错误。我真的可以使用一些帮助,因为我在这个地方呆了几个小时… 问题答案: 这就是问题 因为是,所以每次使用它都会出现,直到您对其进行初始化。所以这: 将失败。 可能的解决方案是在声明时将其初始化: IMO比解决此异常更为重要的事实是,您应该学会 阅读 stacktrace并 理解其 含义,以便可以发现问题并加以解决。 java.

  • 我是mUrthy,我写的是selenium脚本,当我试图执行脚本时,我遇到了错误,请查看下面的脚本和错误。任何一个都能提供更好的解决方案。我使用的是最新版本。 脚本: 包测试项目; 导入组织。openqa。硒。网络驱动程序;导入组织。openqa。硒。火狐。火狐司机; 公共类FirstTestCase{ }错误:线程"main"中的异常java.lang.错误:未解决的编译问题:重复的局部变量驱动

  • 我是EJB 3.1的初学者,并试图运行我的第一个Hello World程序并获得NameNotFoundException。 这是我的课 本地接口: 远程接口: 豆类: 客户: } 有人能对此提出建议吗?提前谢谢

  • 问题内容: 我的JDBC代码有问题。我正在尝试通过MySQL连接,但它给了我一个错误。如果您有时间,下面会给出我的错误日志。 我的代码如下。我正在使用驱动程序: 问题答案: 当您使用Eclipse作为IDE并尝试运行甚至无法编译的代码时,都会发生此错误。在Eclipse中检查“ 问题” 视图,并在执行应用程序之前修复编译错误。

  • 错误页面截图。选择的文本就是错误。