如题:如果不用properties文件直接在代码里设置,程序可以运行,部分代码如下:
                .....        
        Context ctx = null;
        Properties props = new Properties();        props.setProperty(Context.INITIAL_CONTEXT_FACTORY,
                "weblogic.jndi.WLInitialContextFactory");
        props.setProperty(Context.PROVIDER_URL,
                "t3://localhost:7001");
        props.setProperty(Context.SECURITY_CREDENTIALS, "weblogic08");
        props.setProperty(Context.SECURITY_PRINCIPAL, "weblogic");        System.out.println(props.getProperty(Context.INITIAL_CONTEXT_FACTORY));
        System.out.println(props.getProperty(Context.PROVIDER_URL));
        System.out.println(props.getProperty(Context.SECURITY_CREDENTIALS));
        System.out.println(props.getProperty(Context.SECURITY_PRINCIPAL));
         
         try {
            ctx = new InitialContext(props);
        .......
        运行文件一切正常,能正常打印出各键的值
        
        如果使用properties文件就就执行不了了         
          properties文件内容:          Context.INITIAL_CONTEXT_FACTORY=weblogic.jndi.WLInitialContextFactory
          Context.PROVIDER_URL=t3://localhost:7001
          Context.SECURITY_CREDENTIALS=weblogic08
          Context.SECURITY_PRINCIPAL=weblogic          java部分代码:    
            .......
             
            Context ctx = null;
            Properties props = new Properties();
            FileInputStream in = new FileInputStream("src/JDBC/database.properties");
            props.load(in);
            in.close();
            System.out.println(props.getProperty(Context.INITIAL_CONTEXT_FACTORY));
            System.out.println(props.getProperty(Context.PROVIDER_URL));
            System.out.println(props.getProperty(Context.SECURITY_CREDENTIALS));
            System.out.println(props.getProperty(Context.SECURITY_PRINCIPAL));            try {
            ctx = new InitialContext(props); 
            ......             运行文件时
             打印各键的值均为null,如果给键套上双引号,就能把值打印出来。
             但是运行到  ctx = new InitialContext(props);这一段时都会报错
            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           有哪位大哥知道是怎么回事吗,该怎么改?      
     

解决方案 »

  1.   

    属性文件里
    如果使用properties文件就就执行不了了  
      properties文件内容:  Context.INITIAL_CONTEXT_FACTORY=weblogic.jndi.WLInitialContextFactory
      Context.PROVIDER_URL=t3://localhost:7001
      Context.SECURITY_CREDENTIALS=weblogic08
      Context.SECURITY_PRINCIPAL=weblogic
    这里面的key如Context.INITIAL_CONTEXT_FACTORY修改为Context.INITIAL_CONTEXT_FACTORY对应的值,比如Context.INITIAL_CONTEXT_FACTORY=xxxFactory,那么在属性文件里就写xxxFactory,而不是写Context.INITIAL_CONTEXT_FACTORY这个信息
      

  2.   


    感谢你的回复我把properties文件改成INITIAL_CONTEXT_FACTORY=weblogic.jndi.WLInitialContextFactory
    PROVIDER_URL=t3://localhost:7001
    SECURITY_CREDENTIALS=weblogic08
    SECURITY_PRINCIPAL=weblogic还是不行啊。