【问题标题】:Java Servlet & JDBC Driver IssueJava Servlet 和 JDBC 驱动程序问题
【发布时间】:2012-12-27 02:10:22
【问题描述】:

从测试 servlet 加载我的驱动程序时出现问题,错误只是

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

通过 tomcat 运行 servlet - 由于 localhost:8080 页面显示在浏览器中,因此运行正常。 servlet 正在尝试连接到 MySQL 工作台中运行的数据库。

我的 servlet 类中的代码,它尝试加载驱动程序:

        String driver = "com.mysql.jdbc.Driver";    
        Class.forName(driver).newInstance();
        // Make db connection
        con = DriverManager.getConnection(url, USERNAME, PASSWORD);   
        st  = con.createStatement();

系统变量设置如下:

JAVA_HOME:C:\Program Files\Java\jdk1.7.0_02\

类路径: C:\apache-tomcat-6.0.35\lib\servlet-api.jar;C:\ProgramFiles\Java\jre7\lib\mysql-connector-java-5.1.22-bin;

路径:C:\Program Files\Java\jdk1.7.0_02\bin

现在,据我所知,一切看起来都已正确设置。对于可能导致问题的原因,我将不胜感激,因为我对如何解决此问题一无所知。

非常感谢。

【问题讨论】:

    标签: java servlets driver loading classnotfoundexception


    【解决方案1】:

    环境变量CLASSPATH 仅由命令控制台中的javajavac 命令使用,即使这样也仅在您不使用任何-cp-classpath-jar 参数时使用。在部署到 Tomcat 的 webapp 运行时未使用它。

    相反,webapp 的默认类路径包括/WEB-INF/lib 文件夹等。您需要确保将 JDBC 驱动程序 JAR(!) 文件放入其中(绝对不是 Servlet API JAR 文件!)。

    您也不应该将任意 JAR 文件放到 JRE 的 /lib/lib/ext 文件夹中。这将使您的(Web)应用程序不可移植,因为它们不会在 JRE 的 /lib 文件夹中没有 JDBC 驱动程序 JAR 文件的环境中运行。对于 Web 应用程序,确实需要将其放在 /WEB-INF/lib 文件夹中,以便它可以作为 webapp 的一部分分发。


    与具体问题无关newInstance() 调用在 MySQL JDBC 驱动程序上是多余的。仅在具有相关错误的旧 MM 驱动程序上才需要。另见What is the difference between "Class.forName()" and "Class.forName().newInstance()"?

    【讨论】:

    • 另外,在使用JNDI Datasource时官方Tomcat docs建议将JDBC jar文件复制到$TOMCAT_HOME/lib .在与 MySQL、Oracle DB 和 PostgreSQL 相关的示例中,都明确说明了这一点。这是引用:Copy the Postgres JDBC jar to $CATALINA_HOME/lib. As with Oracle, the jars need to be in this directory in order for DBCP's Classloader to find them. This has to be done regardless of which configuration step you take next.
    【解决方案2】:

    类路径的这一部分很奇怪:

    C:\ProgramFiles\Java\jre7\lib\mysql-connector-java-5.1.22-bin
    

    我希望这里有一些带有驱动程序类的 jar 文件。

    【讨论】:

      【解决方案3】:

      您的 MySql 驱动程序的类路径似乎是错误的:

      应该是:

      /path/mysql-connector-java-ver-bin.jar
      

      More info

      【讨论】:

        猜你喜欢
        • 2012-03-10
        • 2020-03-08
        • 1970-01-01
        • 2013-02-17
        • 2010-10-15
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        • 2016-03-18
        相关资源
        最近更新 更多