2011-08-19 80 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

相關問題