Java 使用mysql的JDBC类型4连接
我编写了一个程序,使用具有类型4连接的jdbc连接到数据库。该程序编译得很好,但给出了java.lang.ClassNotFoundException的一个异常:com.mysql.jdbc.Driver。我提取了java文件所在文件夹中的所有文件夹,甚至将所有jar文件和数据库都放在同一文件夹中。数据库包含ID为1和2的两条记录。有什么问题吗Java 使用mysql的JDBC类型4连接,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,我编写了一个程序,使用具有类型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[]) {
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);
}
}
}您需要在类路径中包含
com.mysql.jdbc.Driver
乙二醇
java-cp mysql.jar;。TestJDBC
其中mysql.jar是包含类文件的jar
com/mysql/jdbc/Driver.class
在windows计算机上
将mysql-connector-java-5.0.8-bin.jar和TestJDBC.class
放在同一文件夹中
从执行的文件夹
java-cp mysql-connector-java-5.0.8-bin.jar;。TestJDBC
这是意料之中的事
unix通常需要
java-cp mysql-connector-java-5.0.8-bin.jar:。TestJDBC
正如BevynQ所回答的,从命令行设置类路径会为cmd的特定当前实例设置路径(据我所知),如果退出/关闭并重新打开命令提示符,则需要再次设置路径。
我想有两种解决方案可以在程序中使用jar文件:
- 解决方案1)复制Program files/Java/JRE/lib文件夹中的jar文件,这样它就可以用于运行时环境,但不建议在JDK/JRE中添加jar文件
- 解决方案2)设置classpath变量以放置jar文件位置的完整路径,以便它可用于运行时环境:
复制jar文件位置的完整路径,转到环境变量,搜索用户/系统类路径变量(当前登录用户的用户变量,当前窗口上所有用户帐户的系统变量),如果存在,编辑它并将路径置于起始位置,否则创建新类路径变量并放置完整路径
如果您的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
还要确保您没有使用重复的jar尝试过它,但仍然得到相同的例外Windows或linux或其他?您不应该将jar文件放在JDK中以使类路径正常工作。它仅适用于JDK库(以及一些扩展库)。另外,CLASSPATH
环境变量几乎从未被“真正的”Java程序使用过。一般来说,你应该忽略它的存在。@markrotteveel:谢谢你的建议。但就我所知,通过设置类路径,我们可以通知java运行时环境在哪里查找特定的API相关jar文件,以定位该API的类和其他资源。请让我知道我是否有误导性。是的,这就是类路径的用途,但一般来说,环境变量classpath
不用于定义应用程序的类路径(例如,当您使用java-cp…
或java-jar…
、java Webstart等执行时,classpath
被忽略)