Tôi đang làm việc trong hồ sơ kiểm tra Junit mà tải tập tin SQL và tải nó vào Oracle:Không thể nhanh chóng lớp: org.apache.naming.java.javaURLContextFactory
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import oracle.jdbc.pool.OracleConnectionPoolDataSource;
import org.junit.BeforeClass;
import org.junit.Test;
public class OracleCreateScheme1
{
public OracleCreateScheme1()
{
}
@BeforeClass
public static void setUpClass() throws Exception
{
// rcarver - setup the jndi context and the datasource
try
{
// Create initial context
System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.naming.java.javaURLContextFactory");
System.setProperty(Context.URL_PKG_PREFIXES,
"org.apache.naming");
InitialContext ic = new InitialContext();
ic.createSubcontext("java:");
ic.createSubcontext("java:/comp");
ic.createSubcontext("java:/comp/env");
ic.createSubcontext("java:/comp/env/jdbc");
// Construct DataSource
OracleConnectionPoolDataSource ds = new OracleConnectionPoolDataSource();
ds.setURL("jdbc:oracle:thin:@192.168.1.104:1521:oracle");
ds.setUser("admin");
ds.setPassword("qwerty");
ic.bind("java:/comp/env/jdbc/oracle", ds);
}
catch (NamingException ex)
{
//Logger.getLogger(MyDAOTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Test
public void createOracleScheme() throws SQLException, NamingException
{
Context initContext = new InitialContext();
Context webContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) webContext.lookup("jdbc/Oracle");
// Read File ------------------------------------------------------------------
String s = new String();
StringBuffer sb = new StringBuffer();
try
{
FileReader fr = new FileReader(new File("OracleScheme.sql"));
BufferedReader br = new BufferedReader(fr);
while ((s = br.readLine()) != null)
{
sb.append(s);
}
br.close();
// here is our splitter ! We use ";" as a delimiter for each request
// then we are sure to have well formed statements
String[] inst = sb.toString().split(";");
Connection c = ds.getConnection();
Statement st = c.createStatement();
for (int i = 0; i < inst.length; i++)
{
// we ensure that there is no spaces before or after the request string
// in order to not execute empty statements
if (!inst[i].trim().equals(""))
{
st.executeUpdate(inst[i]);
System.out.println(">>" + inst[i]);
}
}
}
catch (Exception e)
{
System.out.println("*** Error : " + e.toString());
System.out.println("*** ");
System.out.println("*** Error : ");
e.printStackTrace();
System.out.println("################################################");
System.out.println(sb.toString());
}
}
}
Khi tôi kiểm tra các tập tin tôi nhận được vấn đề này :
Cannot instantiate class: org.apache.naming.java.javaURLContextFactory
Bạn có thể cho tôi biết cách khắc phục sự cố này không? Và bạn có tìm thấy bất kỳ vấn đề nào trong mã Java này không?
Nhiều khả năng tên lớp cần có một vốn "J": 'org.apache.naming.java.JavaURLContextFactory' – iamnotmaynard
Tôi đã thay đổi nhưng tôi lại nhận được thông báo lỗi tương tự. –
Tên lớp *** không *** bắt đầu bằng chữ thường (đáng xấu hổ đối với những người đóng góp Apache). Bạn có bao gồm các JAR cần thiết trong classpath của bạn? – Perception