2011-08-19 2 views
1

JDK1.6.0_16을 사용하여 beanshell 2.0b4를 동적으로로드하려고 시도하는이 간단한 프로그램을 가지고 있습니다 (the documentation에서 제안 함) 행운이 없습니다. 설명서에서는 beanshells의 getClass() 메서드를 사용하면 이전에 "addClassPath()"메서드에 의해로드 된 jars를로드합니다. 그것은 작동하지 않습니다. 나는 강하게 데이 문제는 (으로 Beanshell에) getClass() 메소드가 자신의 동적으로 변경된 클래스 경로를 참조 할 수없는 제안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(); 
} 

...이에 도움이 필요합니다.

참고 : 나는 (기존 JRE 클래스 로더를로드 할 수있는 인,하지으로 Beanshell 클래스 로더를) jre/lib/ext 디렉토리에 mysql.jar 파일을 넣을 때이 코드는 작동

답변

0

이가 아마 beanshell이 ​​아니라 jdbc는 클래스 로더간에 드라이버를로드하는 데 문제가 있습니다 (javadoc 클래스 ClassLoader을 확인하고 this과 같은 해킹 참조).

+0

필자가 제공 한 기사에서 아이디어를 실험했지만 여전히 클래스 로더 문제를 극복하지 못했습니다. 나는 그것을 포기할지도 모른다. – djangofan

관련 문제