繁体   English   中英

Beanshell不会加载动态添加的JDBC Driver类吗?

[英]Beanshell won't load my dynamically added JDBC Driver class?

使用JDK1.6.0_16,我有一个简单的程序,试图在其中获取beanshell 2.0b4来动态加载.jar(如文档所建议的那样),而且我没有运气。 该文档说,如果我使用beanshells的getClass()方法,它将加载以前由“ addClassPath()”方法加载的jar。 它不起作用。 我需要这方面的帮助...

//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类加载器)时,此代码才有效

这可能不是一个BeanShell的事情,JDBC具有跨加载驱动程序类加载器(检查出类Javadoc问题的ClassLoader ,看看黑客就像这样 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM