连接SQL Server数据库,出现了
javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.jndi.fscontext.RefFSContestFactory [Root exception is java.lang.ClassNotFoundException: com.sun.jndi.fscontext.RefFSContestFactory]
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.addToEnvironment(Unknown Source)
at SQLServerJDBCTest.getDataSourceConnection(SQLServerJDBCTest.java:55)
at SQLServerJDBCTest.main(SQLServerJDBCTest.java:142)
异常,fscontext.jar;jndi.jar;dns.jar和providerutil.jar已经导入到工程的类库里,而且在系统环境变量classpath里已经加上类路径了。代码如下:
private Connection getDataSourceConnection(){     
     try{
     JtdsDataSource dataSource = new JtdsDataSource(); 
     dataSource.setServerName("127.0.0.1");
     dataSource.setDatabaseName("members");
     dataSource.setUser("sa");
     dataSource.setPassword("1");
    
     Context ctx = new InitialContext();
     ctx.addToEnvironment(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContestFactory");
     ctx.addToEnvironment(Context.PROVIDER_URL,"file:C:/naming");
    
     String nameOfDataSource = "MyDataSource";
     ctx.rebind(nameOfDataSource, dataSource);
    
     System.out.println(ctx.lookup(nameOfDataSource)+ "is bound with "+ nameOfDataSource);
    
     con = dataSource.getConnection();     
     if(con!=null) 
         System.out.println("Connection Successful!");
    }catch(Exception ex){
   ex.printStackTrace();
   System.out.println("Error Trace in getConnection() : " + ex.getMessage());
    }
    return con;
    }