关于使用EJB时出现javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory的问题
对于这种应用JBOSS,使用EJB的遇到问题,网上有很多人解答,但基本意思是相同的,比如:
EJB异常:Cannot instantiate class: org.jnp.interfaces.NamingContextFactory
EJB异常:Cannot instantiate class:org.jnp.interfaces.NamingContextFactory
如出现以下异常:
Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]
请查看是否将JBOSS_Home下client文件夹中的所有jar包都导入到了项目工程中。
实际上,在classpath內,加上%JBoss Home%clientjbossall-client.jar就可以了
转自:http://b612.javaeye.com/blog/413465
下面进入正题:
今天我也遇到了这个问题,但是用以上的方法依然解决不了问题,根据以前配置SSH(Struts+Spring+Hibernate的经验),我知道配置文件是很容易出现一些很难发现的拼写错误的(这种错误有时可以让你死去活来),主要的两种错误是:
1. 单词拼写出错:错写、漏写、多写了一个字母
2. 单词或者字符串的开头或者结尾多了一个或者几个空格(这种错误最难发现)
我遇到的正是第二种错误,一般来说在配置文件时推荐使用拷贝的方式,即从例子程序的配置文件里拷贝相同的配置(一般的框架里都有例子程序,比如:SSH框架),若必须手写,那就一定要保持一致和精准。
解决方法:
1. 首先确保你的项目里没有任何红叉(用Eclipse或者Myeclipse作为开发环境),如果你的代码里没有红色波浪线,而项目上有红叉,请参考Myeclipse的Launching JMSSink(Time of error:October 17,2009 7:22:05 PM GMT+08:00) Reason:Check the details的解决方法 来解决。
2. 把JBOSS下client下的所有的包都导入到你的客户端项目里(正如上面说到的解决EJB的方法)。
3. 最舒心的一步:把你的jndi.properties文件的里的每个配置仔细的检查拼写错误(单词拼写和多余的空格)。 OK了!
相信,多有很多人会在J2EE开发时遇到很难搞定的小问题,那么可以尝试去检查配置文件里有没有拼写错误!
欢迎有同感的朋友跟帖!