【问题标题】:JDBC type 4 connectivity using mysql使用 mysql 的 JDBC 类型 4 连接
【发布时间】:2013-07-09 03:31:01
【问题描述】:

我编写了一个程序来使用具有类型 4 连接性的 jdbc 连接到数据库。该程序编译得很好,但给出了 java.lang.ClassNotFoundException 异常:com.mysql.jdbc.Driver。我已经提取了我的 java 文件所在文件夹中的所有文件夹,甚至将所有 jar 文件和数据库放在同一个文件夹中。数据库包含 ID 为 1 和 2 的两条记录。可能是什么问题?

import java.sql.*;

class TestJDBC {

public static void main(String aa[]) {

    try {
        Class.forName("com.mysql.jdbc.Driver");

        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Student_Details", "root","");

        Statement stmt = con.createStatement();

        ResultSet rs = stmt.executeQuery("Select ID, studentname from Details where ID=1");

        while(rs.next()) {
            System.out.print(rs.getString("ID"));
            System.out.print("\t");
            System.out.println(rs.getString("StudentName"));
        }
    }
    catch(Exception e) {
        System.out.println(e);
    }
}

}

【问题讨论】:

    标签: java mysql sql jdbc


    【解决方案1】:

    如果您的mysql-connector-java-5.0.8-bin.jar 文件在您的项目中位于类似\lib\ 的路径中,如下所示

    然后使用 cmd 提示符(假设是 windows)将目录更改为该文件夹,然后您需要编译您的类

    javac -cp ".;lib/mysql-connector-java-5.0.8-bin.jar" YourClass.java
    

    如果不是 windows,则使用 :(仅在文件/文件夹名称中有空格时才需要引号)

    然后运行

    java -cp ".;lib/mysql-connector-java-5.0.8-bin.jar" YourClass
    

    还要确保您没有使用重复的罐子

    【讨论】:

      【解决方案2】:

      你需要在类路径中有包含com.mysql.jdbc.Driver的jar

      例如

      java -cp mysql.jar;. TestJDBC

      其中 mysql.jar 是包含类文件的 jar

      com/mysql/jdbc/Driver.class

      在 Windows 机器上

      mysql-connector-java-5.0.8-bin.jarTestJDBC.class 放在同一个文件夹中。

      从执行的文件夹中 java -cp mysql-connector-java-5.0.8-bin.jar;. TestJDBC

      按预期工作。

      unix 通常需要

      java -cp mysql-connector-java-5.0.8-bin.jar:. TestJDBC

      【讨论】:

      • 试过了,还是一样的异常
      • windows or linux or other?
      【解决方案3】:

      正如 BevynQ 所回答的,从命令行设置类路径会为该特定的当前 cmd 实例设置路径(据我所知),如果您退出/关闭并重新打开命令提示符,则需要再次设置路径。 我想有两种解决方案可以在你的程序中使用 jar 文件:

      • 解决方案1) 将jar文件复制到Program Files/Java/JRE/lib文件夹中,以便运行时环境可用,但不建议添加jar文件在 JDK/JRE 中。

      • 解决方案 2) 设置 classpath 变量以放置 jar 文件位置的完整路径,以便它可用于运行时环境: 复制您的 jar 文件位置的完整路径,转到环境变量,搜索用户/系统类路径变量(当前登录用户的用户变量,当前窗口上所有用户帐户的系统变量),如果存在,编辑它并放置您的路径在开始时,否则创建一个新的类路径变量并放置您的完整路径

      Look here to set class-path-

      【讨论】:

      • 永远不要将 jar 文件放入 JDK 以使类路径正常工作。它仅适用于 JDK 库(和一些扩展库)。此外,“真正的”Java 程序几乎从未使用过 CLASSPATH 环境变量。一般来说,你应该忽略它的存在。
      • @Mark Rotteveel:谢谢你的好建议。但据我所知,通过设置类路径,我们通知 java 运行时环境——在哪里寻找与特定 API 相关的 jar 文件以定位该 API 的类和其他资源。如果我有误导,请告诉我。
      • 是的,这就是类路径的用途,但通常环境变量CLASSPATH 不用于定义应用程序的类路径(例如,当您使用java -cp ... 或@987654325 执行时@、Java Webstart 等,CLASSPATH 被忽略)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2011-06-11
      • 1970-01-01
      • 2018-08-19
      • 2011-05-07
      • 1970-01-01
      • 2017-10-08
      相关资源
      最近更新 更多