javax.naming.NoInitialContextException: 无法实例化 class:

javax.naming.NoInitialContextException: Cannot instantiate class:

我正在尝试实现 tutorialpoint 中描述的简单 EJB 应用程序,我正在使用 JBoss 5.1 和 eclipse 作为 IDE,并且我将项目创建为 EJB 3。但是我出现以下错误

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(NamingManager.java:674)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
at javax.naming.InitialContext.init(InitialContext.java:242)
at javax.naming.InitialContext.<init>(InitialContext.java:216)
at com.tutorialspoint.test.EJBTester.<init>(EJBTester.java:42)
at com.tutorialspoint.test.EJBTester.main(EJBTester.java:51)
Caused by: java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory
at java.net.URLClassLoader.run(URLClassLoader.java:366)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:274)
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:671)
... 5 more
java.lang.NullPointerException
at com.tutorialspoint.test.EJBTester.testStatelessEjb(EJBTester.java:65)
at com.tutorialspoint.test.EJBTester.main(EJBTester.java:53)
null

有人可以指导我吗?

您需要将带有 class org.jnp.interfaces.NamingContextFactory 的 jar 添加到客户端代码中的 class 路径。

你可以得到它here。如果出现版本不匹配错误,请确保为 jboss 5.x 获取合适的 jar。