JDBC驱动程序无法在Java中正确加载

exxodus7

每当我运行以下代码时:

public void insertIntoMysql() {

    URLClassLoader childCl = new URLClassLoader(new URL[] {new URL("file:///myProjectDir/lib/mysql-connector-java-5.0.8-bin.jar")}, this.getClass().getClassLoader());

    try {
        // connect to mysql
        Class.forName("com.mysql.jdbc.Driver", true, childCl);
        String myUrl = "jdbc:mysql://localhost:3306/myDB";
        Connection conn = DriverManager.getConnection(myUrl, "root", "adminpw");

        ...
    } catch {
        ...
    }
}

调用DriverManager时,出现“ java.sql.SQLException:找不到适用于jdbc:mysql:// localhost:3306 / myDB的驱动程序”错误。

我猜想这与我用自定义类加载器加载驱动程序有关(我无法修改调用代码,因此无法更改调用脚本时加载的类路径)。似乎在Class.forName行中找到了驱动程序,但是好像该类仅在两行之后才加载。

有什么想法吗?

- - 更新 - -

我想出了如何在运行时使用BeanShell util将jar添加到我的类路径,如何删除过时的forName以及如何使用自定义类加载器停止运行。我的更新代码如下:

import com.mysql.jdbc.Driver;

public void insertIntoMysql() {

    try {
        addClassPath("/lib/mysql-connector-java-5.0.8-bin.jar");
        // printing out the classpath URLs here shows several
        // jar files along with the one I just added:
        // file:/C:/myProjectDir/lib/mysql-connector-java-5.0.8-bin.jar

        // connect to mysql
        String myUrl = "jdbc:mysql://localhost:3306/myDB";
        Connection conn = DriverManager.getConnection(myUrl, "root", "adminpw");

        ...
    } catch {
        ...
    }
}

但是,即使我的类路径已更新,我仍然会得到与最初得到的相同的SQLException。

我还尝试在添加新的类路径后立即调用BeanShell的“ reloadClasses()”方法,但无济于事。

曼努蒂

是的,这与用于加载类的自定义类加载器有关。Javadocs中也提到了这一点DriverManager

getConnection调用该方法时DriverManager它将尝试从初始化时加载的驱动程序和使用当前applet或应用程序相同的类加载器显式加载的驱动程序中找到合适的驱动程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法加载netezza JDBC驱动程序

来自分类Dev

java.lang.IllegalStateException:无法加载JDBC驱动程序类[com.mysql.jdbc.GoogleDriver]

来自分类Dev

Solr无法加载MySQL JDBC驱动程序

来自分类Dev

无法加载驱动程序:com.mysql.jdbc.Driver

来自分类Dev

异常是java.lang.IllegalStateException:无法加载JDBC驱动程序类

来自分类Dev

Nvidia驱动程序无法在Fedora 23上正确加载

来自分类Dev

Java Class.forName,JDBC连接加载驱动程序

来自分类Dev

尝试设置Java DB:“找不到类:无法加载JDBC驱动程序org.apache.derby.jdbc.EmbeddedDriver”

来自分类Dev

加载postgreSQL JDBC驱动程序

来自分类Dev

加载postgreSQL JDBC驱动程序

来自分类Dev

log4j:ERROR无法加载驱动程序java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver

来自分类Dev

无法加载JDBC驱动程序类'com.mysql.jdbc.Driver'Tomcat 8和Eclipse

来自分类Dev

无法加载JDBC驱动程序类'com.mysql.jdbc.Driver'声纳插件jenkins

来自分类Dev

ActiveMQ 5.8:无法加载JDBC驱动程序类'oracle.jdbc.driver.OracleDriver'

来自分类Dev

ANT JDBC驱动程序[com.mysql.jdbc.Driver]无法加载?

来自分类Dev

Eclipse无法加载JDBC驱动程序类:net.sourceforge.jtds.jdbc.Driver?

来自分类Dev

无法加载JDBC驱动程序类'com.mysql.jdbc.Driver'声纳插件jenkins

来自分类Dev

spring-boot无法加载JDBC驱动程序类“ org.sqlite.JDBC”

来自分类Dev

无法加载Hibernate JDBC驱动程序com.mysql.jdbc.Driver

来自分类Dev

无法加载 JDBC 驱动程序类“com.mysql.cj.jdbc.driver”

来自分类Dev

无法注册JDBC驱动程序

来自分类Dev

无法加载JDBC驱动程序类-Spring Batch独立程序

来自分类Dev

PostgreSQL驱动程序“无法加载类”

来自分类Dev

无法加载Windows驱动程序

来自分类Dev

驱动程序类无法首次加载

来自分类Dev

NVIDIA驱动程序:无法加载信息

来自分类Dev

Symfony无法加载mongodb /驱动程序

来自分类Dev

Selenium 无法正确访问驱动程序

来自分类Dev

Java MySQL JDBC 驱动程序异常

Related 相关文章

  1. 1

    无法加载netezza JDBC驱动程序

  2. 2

    java.lang.IllegalStateException:无法加载JDBC驱动程序类[com.mysql.jdbc.GoogleDriver]

  3. 3

    Solr无法加载MySQL JDBC驱动程序

  4. 4

    无法加载驱动程序:com.mysql.jdbc.Driver

  5. 5

    异常是java.lang.IllegalStateException:无法加载JDBC驱动程序类

  6. 6

    Nvidia驱动程序无法在Fedora 23上正确加载

  7. 7

    Java Class.forName,JDBC连接加载驱动程序

  8. 8

    尝试设置Java DB:“找不到类:无法加载JDBC驱动程序org.apache.derby.jdbc.EmbeddedDriver”

  9. 9

    加载postgreSQL JDBC驱动程序

  10. 10

    加载postgreSQL JDBC驱动程序

  11. 11

    log4j:ERROR无法加载驱动程序java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver

  12. 12

    无法加载JDBC驱动程序类'com.mysql.jdbc.Driver'Tomcat 8和Eclipse

  13. 13

    无法加载JDBC驱动程序类'com.mysql.jdbc.Driver'声纳插件jenkins

  14. 14

    ActiveMQ 5.8:无法加载JDBC驱动程序类'oracle.jdbc.driver.OracleDriver'

  15. 15

    ANT JDBC驱动程序[com.mysql.jdbc.Driver]无法加载?

  16. 16

    Eclipse无法加载JDBC驱动程序类:net.sourceforge.jtds.jdbc.Driver?

  17. 17

    无法加载JDBC驱动程序类'com.mysql.jdbc.Driver'声纳插件jenkins

  18. 18

    spring-boot无法加载JDBC驱动程序类“ org.sqlite.JDBC”

  19. 19

    无法加载Hibernate JDBC驱动程序com.mysql.jdbc.Driver

  20. 20

    无法加载 JDBC 驱动程序类“com.mysql.cj.jdbc.driver”

  21. 21

    无法注册JDBC驱动程序

  22. 22

    无法加载JDBC驱动程序类-Spring Batch独立程序

  23. 23

    PostgreSQL驱动程序“无法加载类”

  24. 24

    无法加载Windows驱动程序

  25. 25

    驱动程序类无法首次加载

  26. 26

    NVIDIA驱动程序:无法加载信息

  27. 27

    Symfony无法加载mongodb /驱动程序

  28. 28

    Selenium 无法正确访问驱动程序

  29. 29

    Java MySQL JDBC 驱动程序异常

热门标签

归档