无法实例化类:org.apache.naming.java.javaURLContextFactory
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了无法实例化类:org.apache.naming.java.javaURLContextFactory,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3243字,纯文字阅读大概需要5分钟。
内容图文
![无法实例化类:org.apache.naming.java.javaURLContextFactory](/upload/InfoBanner/zyjiaocheng/699/900fbc5b09f5457c8c4c8ca0dff8cc3a.jpg)
我正在研究Junit测试文件,它加载SQL文件并将其加载到Oracle中:
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());
}
}
}
当我测试文件时,我遇到了这个问题:
无法实例化类:org.apache.naming.java.javaURLContextFactory
你能告诉我如何解决这个问题吗?你也发现这个Java代码有什么问题吗?
解决方法:
我通过将Apache Tomcat中的库添加到运行时测试库来修复此问题.
在Netbeans中:
Project Properties -> Libraries -> Run Tests
Add JAR/Folder
我需要的两个库是catalina.jar和tomcat-juli.jar.你的里程可能有所不同
我在Tomcat的安装目录下找到了它们.例如:
apache-tomcat-7.0.34/bin/tomcat-juli.jar
apache-tomcat-7.0.34/lib/catalina.jar
注意其中一个jar位于bin目录中,另一个位于lib目录中
这可能不是解决问题的最佳方法.注入DataSource的方法会更好.
内容总结
以上是互联网集市为您收集整理的无法实例化类:org.apache.naming.java.javaURLContextFactory全部内容,希望文章能够帮你解决无法实例化类:org.apache.naming.java.javaURLContextFactory所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。