2011-08-19 57 views
1

使用JDK1.6.0_16,我有这个简单的程序,我试图让beanshell 2.0b4动态加载.jar(因为the documentation表明它会这样做),我没有运气。该文档说,如果我使用beanshells的getClass()方法,那么它将加载之前由“addClassPath()”方法加载的jar。它不工作。我需要这方面的帮助...Beanshell不会加载我的动态添加的JDBC驱动程序类?

//debug(); 
addClassPath("mysql-connector-java-5.1.15.jar"); 
import com.mysql.jdbc.Driver; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.util.Arrays; 

System.out.println("MySQL Connect Example."); 
System.out.println("Classpath: " + Arrays.toString(getClassPath()) + "\n"); 

Connection conn = null; 
String url = "jdbc:mysql://localhost:3306/"; 
String dbName = "test"; 
String driver = "com.mysql.jdbc.Driver"; 
String userName = "root"; 
String password = "password"; 
try { 
    Class driverClass = getClass(driver); 
    if(driverClass != null) { 
    Driver driver = driverClass.newInstance(); 
    if(driver != null) { 
     DriverManager.registerDriver(driver); 
    } 
    } 
    conn = DriverManager.getConnection(url+dbName,userName,password); 
    System.out.println("Connected to the database"); 
    conn.close(); 
    System.out.println("Disconnected from database"); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

我强烈地有这个问题表明,(BeanShell的的)的的getClass()方法是无法看到自己的动态改变类路径。

注:此代码的工作,只有当我把文件的mysql.jar到JRE/lib/ext目录(这是传统的JRE类加载器可以加载它,不BeanShell的类加载器)

回答

0

这可能是不是beanshell的东西,jdbc已经发布加载驱动程序加载类加载器(查看类javadoc的ClassLoader,并看到像this黑客)。

+0

我一直在试验你提供的那篇文章的想法,但仍然无法克服类加载器的问题。我可能会放弃它。 – djangofan

相关问题