我初学J2EE,在书上看到的实例程序,但是放在MyEclipse里出了错误,希望各位高人指点下,这 是怎么回事
 代码:
     import javax.naming.*;
import javax.jms.*;
public class p2ptry{
private Connection connection;
private Session session;
private MessageProducer producer;

public static void main(String[] args) throws JMSException, NamingException{
p2ptry sender=null;
try{
sender=new p2ptry();
System.out.println("sender");
sender.sendMessage("Hello world");
}
catch(Exception ex){
System.out.println(ex);
}
finally
{
try{
sender.close();
}
catch(Exception ex){

}

}
}
public p2ptry() throws JMSException,NamingException{
Context context =new InitialContext();
ConnectionFactory connectionFactory=(ConnectionFactory)context.lookup("jms/QueueConnectionFactory");
connection=connectionFactory.createConnection();
session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination=(Destination)context.lookup("jms/firstQueue");
producer=session.createProducer(destination);
}

public void sendMessage(String msg) throws JMSException{
TextMessage message=session.createTextMessage();
message.setText(msg);
producer.send(message);
}

public void close() throws JMSException{
producer.close();
session.close();
connection.close();
}

}这是错误
Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at p2ptry.<init>(p2ptry.java:31)
at p2ptry.main(p2ptry.java:11)

解决方案 »

  1.   

    好像我以前碰过这个问题,忘了具体怎么解决的了。LZ,到百度、Google里搜下应该有结果
      

  2.   

    你不是在jms服务器里运行的话,得用
    Hashtable env = new Hashtable();
    env.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
    env.put("java.naming.provider.url", "jnp://"+ip+":1099");
    env.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
    Context context = new InitialContext(env);
      

  3.   

    放到jboss里吧。jndi交给jboss去初始化,玩客户端的话,不只要配置环境,还要加一大堆jboss之类的依赖,麻烦那。