Need to specify class name in environment or system property, or as an applet parameter, or in an ap

原创 2012年03月28日 16:33:53
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 Chat.<init>(
Chat.java:56)

    at Chat.main(Chat.java:22)


这是《Java消息服务》里第二章的程序编译出的错,哥可是完完整整按照书本指示来做的。问题的缘由是没有找到jndi.properties文件。

我可在工程所在目录(即有.classpath),src目录下都放了jndi.properties,可还是用eclipse编译总是出错。

但是命令行执行:javac Chat.java却可以执行,且编译成功 & 运行成功。

eclipse怎么了???

不过如果非要在eclipse下编译执行的话,这暂时有个解决方法,可以不用jdni.properties文件,用下面的方法:

  Properties p = new Properties();
		p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
		p.put(Context.PROVIDER_URL, "tcp://localhost:61616");
		p.put(Context.SECURITY_PRINCIPAL, "system");
		p.put(Context.SECURITY_CREDENTIALS, "manager");
		p.put("connectionFactoryNames", "topicCF");
		p.put("topic.topic1", "jms.topic1");


有解决方案了再更新。


有新发现:

真的让人很囧,网上查了那么多都说jndi.properties应该放在src目录下,可是放在bin目录下才是王道,至少编译成了。(我是指在eclipse里)

不懂eclipse,不懂classpath

——2012-3-28 21:25:12更新

环境:

OS: Windows XPsp3

Eclipse SDK: Version: 3.5.2 Build id: M20100211-1343

ActiveMQ 5.4.3



javax.naming.NoInitialContextException: Need to specify class name in environment or system property

javax.naming.NoInitialContextException: Need to specify class name in environment or system property...

EJB3.0异常总结--- Need to specify class name in environment or system property,

异常:  Need to specify class name in environment or system property, or     as an applet paramet...

javax.naming.NoInitialContextException错误的解决方案

今天,学习用了一下nutz框架,写了一个HelloWorld的小程序,在用jndi配置数据源时,写了一个测试类,并在main方法中调用了jndi获得数据库连接,但是报错了,错误信息如下: javax....

在使用jetty配置jndi的时候报错“Need to specify class name in environment or system property, or as an applet pa

用jetty配置了jndi后报错,是因为jetty默认不支持jndi,在运行的时候需要勾选支持jndi,否则会找不到jndi的配置文件导致报上面的错误。 参考:http://www.cnblogs....

win10 驱动程序无法使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:Could not generate DH keypair

驱动程序无法使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:Could not generate DH key pair 这个原因是因为jdk版本过低导致的,我原先是jdk...

驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

问题描述:用的是jdk1.8 + sqljdbc42.jar但是在连接数据库的时候抛出异常“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。” 解决方案:换用低...

If you are behind an HTTP proxy, please configure the proxy settings either in IDE or Gradle.(AS报错)

If you are behind an HTTP proxy, please configure the proxy settings either in IDE or Gradle.问题解决方案...

Bean property 'RegDao' is not writable or has an invalid setter method. Does the parameter type of t

Bean property 'RegDao' is not writable or has an invalid setter method. Does the parameter type of t...

javax.naming.NoInitialContextException: Need to specify class name in XXX解决

环境 MyEclipse 8.6 + JBoss 6.0 + JDK 1.6.13 + EJB 3.0   问题 运行EJB程序,出现如下异常:   javax.naming.NoInitialCon...
  • Wentasy
  • Wentasy
  • 2012年12月12日 16:43
  • 2910

Ubuntu 14.04下Redis安装报错:“You need tcl 8.5 or newer in order to run the Redis test”问题解决

Redis
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Need to specify class name in environment or system property, or as an applet parameter, or in an ap
举报原因:
原因补充:

(最多只允许输入30个字)