初学EJB,请高手指点迷津!在运行客户端程序时,报错信息如下:
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 com.bjsxt.ejb.FirstEjbClient.main(FirstEjbClient.java:13)现在说说我的程序: 
环境是:Myeclipse 6.0+Jboss+JDK1.6 JDK什么的都没问题,我这里有两个工程,一个是EJB,一个是客户端我的EJB工程里有两个.java文件,FirstEjb.java和FirstEjbBean.java,其中FirstEjb.java是接口,FirstEjbBean.java是对它的实现,内容分别如下:
FirstEjb.java内容如下:
package com.bjsxt.ejb;
public interface FirstEjb {
public String saySomething(String name);
}FirstEjbBean.java内容如下:
package com.bjsxt.ejb;
import javax.ejb.Stateless;
import javax.ejb.Remote;
@Stateless
@Remote
public class FirstEjbBean implements FirstEjb {
public String saySomething(String name) {
return "你好,"+name;
}
}并且在Jboss里面部署了(打包后放到deploy文件夹下)
在客户端工程里有一下两个文件:FirstEjbClient.java和jndi.properties
FirstEjbClient.java内容如下:
package com.bjsxt.ejb;
import javax.naming.InitialContext; //Ctrl+shift+m
public class FirstEjbClient {
public static void main(String[] args) throws Exception {
InitialContext ctx = new InitialContext();
FirstEjb ejb = (FirstEjb) ctx.lookup("FirstEjbBean/remote");
String s = ejb.saySomething("hahah");
System.out.println(s);
}
}
jndi.properties内容如下:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099
且FirstEjbClient.java和jndi.properties处在同一个包下面(好像这样才可以,上课听老师讲的^_^)
现在在FirstEjbClient.java右击Run as->Java Application,之后就出现了上面的异常......
这是我第一次写EJB,实现的功能也很简单,这个问题一直困扰着我,请高手不吝赐教哦!