有的时候jdbc驱动它不是放在classpath里的,而是要你写程序动态载入的。
J2SE6有API给你修改classpath,但是4-5版本里就只有用URLClassLoader载入。
问题是,URLClassLoader载入的类,在SystemClassLoader里还是找不到。
举个例子就是
URLClassLoader classLoader = new URLClassLoader(new URL[]{file.toURI().toURL()});
classLoader.loadClass(driverClass); // OK
Class.forName(driverClass); // NG
Class.forName(driverClass,true,classLoader);// OK
只有用Class.forName(String,boolean,ClassLoader)这样指定ClassLoader才能找的到这个类。
但是有些Pool,比如C3P0,他没有考虑到这一点,还是用SystemClassLoader去load,每次都报找不到驱动,搞得我很痛苦。
先想了一个walkaround,就是自己写一个DataSource。这里我写点大意代码。
URLClassLoader classLoader = new URLClassLoader(new URL[]{file.toURI().toURL()});
Class clazz = classLoader.loadClass(driverClass); // OK
Driver driver = (Driver)clazz.newInstance();
//
private class URLDataSource implements DataSource {
/* (non-Javadoc)
* @see javax.sql.DataSource#getConnection(java.lang.String, java.lang.String)
*/
public Connection getConnection(String username, String password) throws SQLException {
// TODO Auto-generated method stub
Properties props = new Properties();
props.setProperty("user", username);
props.setProperty("password", password);
return driver.connect(jdbcurl, props);
}
}
这样就可以取到一个自己的DataSource,可以先把其他的代码进行下去,以后可以再回到这里慢慢完善。
分享到:
相关推荐
此外,反射机制允许动态访问和修改对象,异常处理则保证了程序的健壮性,JDBC用于数据库操作,XML处理则在数据交换和存储中发挥重要作用。 总而言之,这个压缩包是Java开发者学习和工作的宝贵财富,无论你是初学者...
这里我们关注的是SQL Server 2000数据库,以及它的JDBC(Java Database Connectivity)驱动,具体是`sqljdbc4.jar`和`sqljdbc.jar`。这两个文件是Java应用程序连接到SQL Server 2000的桥梁,它们允许Java代码通过...
这个压缩包包含两个关键的JAR文件:sqljdbc.jar和sqljdbc4.jar,它们都是由Microsoft提供的Java Database Connectivity (JDBC) 驱动程序。本文将深入探讨这两个驱动包以及它们在SQL服务中的应用。 首先,JDBC是Java...
在本例中,由于`jdbc-stdext-2.0.jar`与JDBC相关,因此需要确保其与所使用的数据库驱动以及其他JDBC相关的库相兼容。 总的来说,理解和解决“missing artifacts”问题对于Java开发者来说至关重要,它涉及到Maven的...
标题与描述中的“J2SE 5.0- Java安全及网络计算的最新技术”强调了Java标准版(J2SE)在版本5.0中引入的安全性和网络功能的增强。这一版本标志着Java平台在安全性、加密技术以及网络通信方面的重要进展,为开发者...
jaxmpp-j2se-3.0.0.jar(XMPP/Tigase开发,java代码类型客户端使用的jar包) 需要的朋友自己下载,一个朋友让我帮他找的,就顺便发出来给更多需要的朋友吧
资源名称:Java-J2se、J2ee开发全程视频教程和源码(87集)资源目录:【】Java-J2se-J2ee全程教程(01-10)【】Java-J2se-J2ee全程教程(11-20)【】Java-J2se-J2ee全程教程(21-30)【】Java-J2se-J2ee全程教程(31...
### J2SE总结知识点 #### 一、Java基础语法与数据类型 1. **源文件与公共类**:在Java中,如果一个类被声明为`public`,那么该类所在的源文件必须与该类名相同,并且一个源文件中只能有一个`public`类。 - 示例:...
本文将深入探讨在给定的压缩包中涉及的几个关键组件:`core-3.3.3`, `javase-3.3.3`, `zxing-1.7-core` 和 `zxing-j2se-1.7`,以及与之相关的JDK版本,包括JDK1.7和JDK1.8。这些组件主要用于二维码生成和处理,对于...
4. **动态语言支持**:J2SE 6.0引入了JSR 223(Scripting for the Java Platform),使得Java平台可以支持多种脚本语言,如JavaScript、Groovy等。 5. **改进的JDBC**:数据库连接性能得到提升,同时增加了对结果集...
6. **跨平台兼容**:kSOAP2不仅适用于Android,还支持J2SE(Java Standard Edition)和J2ME(Java Micro Edition)环境,具有良好的可移植性。 在实际使用中,我们通常会将"ksoap2-android-assembly-2.4-jar-with-...
J2SE 5.0 和 JDBC 3.0 全面支持使用ojdbc5.jar。 2.不再支持oracle.jdbc.driver。从9.0.1开始的每个release都推荐使用oracle.jdbc。这一天终于到来,在11g中,引用oracle.jdbc.driver不再通过编译。 3.j2se ...
J2SE 的API ,分享一下,希望各位兄弟喜欢
zxing/zxing-j2se-1.7.jar包, 包含类 com.google.zxing.StringsResourceTranslator.class com.google.zxing.client.j2se.BufferedImageLuminanceSource.class ...
中文译名是J2SE参考大全(第5版) 这份是自己制作的电子书,现在还没有制作完成,因为内容太多,关打字就打个半死.
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用