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