2015-07-10 88 views
1

數據庫連接。有很多方法可以解決我所知道的這個問題,但我總是得到這些失敗。線程「main」中的異常javax.naming.NoInitialContextException:無法實例化類

有這個java.naming.factory.internal件事,想實例化oracle.aurora.jndi.ojds.OjdsInternalContentFactory,這是失敗的:

Exception in thread "main" javax.naming.NoInitialContextException: Cannot instantiate class: oracle.aurora.jndi.ojds.OjdsInitialContextFactory [Root exception is java.lang.ClassNotFoundException: oracle.aurora.jndi.ojds.OjdsInitialContextFactory] 
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:674) 
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313) 
    at javax.naming.InitialContext.init(InitialContext.java:244) 
    at javax.naming.InitialContext.<init>(InitialContext.java:216) 
    at DB.DBConnector.OpenConnection(DBConnector.java:32) 
    at DB.DBConnector.OpenConnection(DBConnector.java:48) 
    at DB.Start.main(Start.java:22) 
Caused by: java.lang.ClassNotFoundException: oracle.aurora.jndi.ojds.OjdsInitialContextFactory 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:348) 
    at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:72) 
    at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:61) 
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:672) 
    ... 6 more 

這是我的計劃:


package DB; 

import java.sql.*; 
import java.util.Hashtable; 

import javax.naming.*; 
import javax.sql.DataSource; 


public class DBConnector 
{ 
     private String username; 
     private String password; 
     Connection con = null; 


     public void setUsername(String u) 
     { 
      username=u; 
     } 
     public void setPassword(String p) 
     { 
      password=p; 
     } 

     public Connection OpenConnection() throws Exception 
     { 
      Hashtable env = new Hashtable(); 
      env.put("java.naming.factory.initial", "oracle.aurora.jndi.ojds.OjdsInitialContextFactory"); 
      env.put(Context.PROVIDER_URL,"ojds://thin:VAULAB2:1521:TLMSMP"); 

      Context ctx = new InitialContext(env); 
      try 
      { 
       DataSource ds = (DataSource) ctx; //new InitialContext().lookup("DBconfig"); 
       con = ds.getConnection(username,password); 
       return con;    
      } 
      finally 
      { 

      } 
     } 
     public Connection OpenConnection(String u, String p) throws Exception 
     { 
       username=u; 
       password=p; 
       return OpenConnection(); 
     } 
     public void CloseConnection() throws Exception 
     { 
      if (con != null) 
       try { con.close(); } catch (SQLException e) { e.printStackTrace(); } 
     } 

     public DBConnector() 
     { 

     } 
     public DBConnector(String _username,String _password) 
     { 
      setUsername(username); 
      setPassword(password); 
     } 

+0

「根異常是。 java.lang.ClassNotFoundException:oracle.aurora.jndi.ojds.OjdsInitialContextFactory'。 請檢查包含oracle.aurora.jndi.ojds.OjdsInitialContextFactory的jar是否在類路徑 – RahulArackal

回答

0

ClassNotFoundException的:oracle.aurora.jndi.ojds.OjdsInitialContextFactory

是你的問題,該類不能在類路徑中找到,所以你需要安裝談到在圖書館

+0

哪裏可以找到這個庫? –

+0

查找文檔@ http://docs.oracle.com/database/121/JJDEV/jndi_support.htm#CHDDCCEE –

相關問題