在学习jboss的jms,代码是从书上抄的,如下:
package aboutjms;import java.util.Properties;import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;public class MessageSender {    public void sendMessage () throws NamingException, JMSException{
        // 定义Weblogic默认连接工厂
        final String CONNECTION_FACTORY_JNDI = "org.jnp.interfaces.NamingContextFactory";
        
        // 
        Context ctx = getInitialContext ();
        ConnectionFactory connFactory = (ConnectionFactory)ctx.lookup(CONNECTION_FACTORY_JNDI);
        Destination dest = (Destination)ctx.lookup("MessageQueue");
        
        Connection conn = connFactory.createConnection();
        
        Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        
        MessageProducer sender = session.createProducer(dest);
        sender.setDeliveryMode(DeliveryMode.PERSISTENT);
        sender.setTimeToLive(20000);
        
        TextMessage msg = session.createTextMessage();
        
        msg.setText("hello");
        sender.send(msg);
        session.close();
        conn.close();
    }
    
    // 工具方法,获取命名服务的Context对象
    private Context getInitialContext () {
        final String INIT_FACTORY = "org.jnp.interfaces.NamingContextFactory";
        final String SERVER_URL = "jnp://localhost:1099";
        Context ctx = null;
        
        Properties props = new Properties();
        props.put(Context.INITIAL_CONTEXT_FACTORY, INIT_FACTORY);
        props.put(Context.PROVIDER_URL, SERVER_URL);
        try {
            ctx = new InitialContext(props);
        } catch (NamingException e) {
            e.printStackTrace();
        }
        
        return ctx;
    }
    
    public static void main (String [] args) {
        MessageSender mp = new MessageSender();
        try {
            mp.sendMessage();
        } catch (NamingException e) {
            e.printStackTrace();
        } catch (JMSException e) {
            e.printStackTrace();
        }
        
    }
}
启动jboss后,运行代码,出现如下错误:
javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.init(Unknown Source)
at javax.naming.InitialContext.<init>(Unknown Source)
at aboutjms.MessageSender.getInitialContext(MessageSender.java:56)
at aboutjms.MessageSender.sendMessage(MessageSender.java:24)
at aboutjms.MessageSender.main(MessageSender.java:67)
Caused by: java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.sun.naming.internal.VersionHelper12.loadClass(Unknown Source)
... 7 more
Exception in thread "main" java.lang.NullPointerException
at aboutjms.MessageSender.sendMessage(MessageSender.java:25)
at aboutjms.MessageSender.main(MessageSender.java:67)
从网上找了解决方法,classpath里加%JBoss Home%\client\jbossall-client.jar 
,可是没用,还是出错。请高手帮忙指点一下,我用的系统是win7,jboss版本是jboss-5.1.0.GA