Tôi đang cố gắng thêm tệp jar vào classpath khi chạy. Tôi sử dụng mã nàyNạp bình khi chạy
public static void addURL(URL u) throws IOException {
URLClassLoader sysloader = (URLClassLoader) ClassLoader
.getSystemClassLoader();
Class<URLClassLoader> sysclass = URLClassLoader.class;
try {
Method method = sysclass.getDeclaredMethod("addURL", parameters);
method.setAccessible(true);
method.invoke(sysloader, new Object[] { u });
System.out.println(u);
} catch (Throwable t) {
t.printStackTrace();
throw new IOException("Error");
}
}
Hệ thống ra bản in url này:
file:/B:/Java/Tools/mysql-connector-java-5.1.18/mysql-connector-java-5.1.18/mysql-connector-java-5.1.18-bin.jar
Tôi đã kiểm tra con đường này một cách cẩn thận, jar này tồn tại. Ngay cả thử nghiệm này cho thấy com.mysql.jdbc. Lớp trình điều khiển tồn tại.
javap -classpath "B:\Java\Tools\mysql-connector-java-5.1.18\
mysql-connector-java-5.1.18\mysql-connector-java-5.1.18-bin.jar" com.mysql.jdbc.
Driver
Compiled from "Driver.java"
public class com.mysql.jdbc.Driver extends com.mysql.jdbc.NonRegisteringDriver i
mplements java.sql.Driver{
public com.mysql.jdbc.Driver() throws java.sql.SQLException;
static {};
}
Nhưng tôi vẫn nhận được java.lang.ClassNotFoundException khi tôi sử dụng Class.forName này (trình điều khiển). Điều gì sai với mã này?
Bạn có muốn ném một ngoại lệ không? Loại ngoại lệ nào? Khi bạn nói "có gì sai với mã này?" Vui lòng cho chúng tôi biết thêm về kết quả thực tế của bạn và những gì bạn mong đợi – ControlAltDel
có thể trùng lặp của [Thêm tệp vào classpath java lúc chạy] (http://stackoverflow.com/questions/1010919/adding-files-to-java-classpath-at- thời gian chạy) – NPE
có thể trùng lặp của [Làm thế nào tôi nên tải Jars động trong thời gian chạy?] (http://stackoverflow.com/questions/60764/how-should-i-load-jars-dynamically-at-runtime) –