运行出现下列异常
NamingException caught in getConnected: 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
java.lang.NullPointerException
at chapter15.ObjectExample1.main(ObjectExample1.java:59)
Exception in main: null//下面是获得DataSource
InitialContext ctx = new InitialContext( );
DataSource  ds   = (DataSource) ctx.lookup("objects");jndi.properties的内容: 
java.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory
java.provider.url=rmi://localhost:1099
这个jndi.properties应该放在哪里啊

解决方案 »

  1.   

    jndi.properties 放到工程根目录下DataSource  ds   = (DataSource) ctx.lookup("objects"); 数据源没找到啊,objects配好没
      

  2.   

    objects是数据库名,我用常归的方法是可以的
    不知道这句java.provider.url=rmi://localhost:1099是什么意思,这是书上抄的
      

  3.   

    rmi://localhost:1099localhost 的 1099 端口上,要有 jndi 服务啊,不然怎么能找到呢
      

  4.   

    你的正在测试书上的代码吗?书上应该有如何在 jndi 上注册名字的讲解,先在 jndi 上注册一个名字,然后再到 jndi 上去找它,对不对?
      

  5.   

    看不懂。。你这到底是JNDI还是RMI???
    JNDI不是这样拿的。。
      

  6.   

    书上什么也没讲,只是提供了两种方法,一种是用配制文件
    一种是用
    Hashtable env =new Hashtable();
    env.put(Context.INIAL_CONTEXT_FACTORY,"com.sun.jndi.rmi.registry.RegistryContextFactory");
    env.put(Context.PROVIDER_URL,"rmi://localhost:1099");
    InitalContext ctx=new InitialContext(env);
      

  7.   

    你找得这个方法不太好,本机不用设置env的,
    直接InitalContext ctx=new InitialContext()就可以了,
    你的问题出在(DataSource) ctx.lookup("objects");这一句上面,你用的是什么服务器,配置了datasource了吗?
    如果是tomcat,通常是这样写ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
      

  8.   

    我写的不是WEB程序,我写的是应用程序,不知道程序应该怎么配
      

  9.   

    我写的不是WEB程序,我写的是应用程序,不知道程序应该怎么配
    ---------------像这样的应用程序,也是分成两部分,一部分是服务端,一部分是客户端。你亮出来的代码,是属于客户端的。