Exception: Need to specify class name in environme

2019-04-22 02:14发布

问题:

This question already has an answer here:

  • The meaning of NoInitialContextException error 12 answers

When i run a JMS related application, i am encountering the following exception error.

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

We are using Sun Application Server 9.1

Any idea what are we missing?

I already tried adding the following but result still the same

    Properties env = new Properties();
    env.put("java.naming.factory.initial","com.sun.jndi.cosnaming.CNCtxFactory");

    Context ctx = new InitialContext(env);

回答1:

A very common error can be that you have not added the jboss-client.jar! or alternate jar if using weblogic.



回答2:

I was facing the same problrm while working with spring & weblogic . I had resolved it by setting two properties

System.getProperties().put("java.naming.factory.initial","weblogic.jndi.WLInitialContextFactory"); System.getProperties().put("java.naming.provider.url", "t3://localhost:80")



回答3:

In my environment, setting Context.INITIAL_CONTEXT_FACTORY wasn't enough. I also had to set Context.URL_PKG_PREFIXES, explained at http://docs.oracle.com/javase/6/docs/api/javax/naming/Context.html#URL_PKG_PREFIXES.



标签: jms