Java SQLite3 连接失败

Java SQLite3 Connection Failing

我在将我的 java 脚本连接到我的 SQLite3 数据库时遇到了一些问题。

我的目录包含我的脚本,如下所示

C:/PROG/JavaPROG/programs/java_database

在这个目录中我有 3 个文件

Query.java, Query.class and the database query.db

我的 java 代码如下所示

import java.sql.*;

public class Query3 {

    public static void main(String[] args) {

        Connection conn = null;

        try {
            Class.forName("org.sqlite.JDBC");
            conn = DriverManager.getConnection("jdbc:sqlite:C:/PROG/JavaPROG/programs/java_database/query.db");
            System.out.println("Connection Success");
        } catch(Exception log) {
            System.out.println("Connection Failed: " + log);
        }

    }

}

我的类路径确实包含

C:\Program Files\Java\jdk1.8.0\bin

那个 bin 目录里面是 sqlite jdbc 驱动程序

sqlite-jdbc-3.7.2.jar

我可以将我的脚本连接到 PostgreSQL 数据库,但我不明白为什么它没有连接到 SQLite3,我收到以下错误消息

java.lang.ClassNotFoundException: org.sqlite.JDBC

我是不是做错了什么?

您需要在编译时在 class 路径中明确提供 sqlite-jdbc-3.7.2.jar 文件,并使用 -cp 选项 运行 您的 classes。 java 和 javac 命令只会在 class 路径中查找 .class 文件,而不是 jars。

试试这个:

javac -cp <path_to_jar/sqlite-jdbc-3.7.2.jar>;. <your_class_name>.java

如果你有多个第三方库,你可以使用通配符:

javac -cp <path_to_jar/*>;. <your_class_name>.java

注意;是Windows中使用的分隔符。如果您使用的是基于 unix 的系统,则需要使用 : 而不是 ;。 Java 可能与平台无关,但 java 和 javac 命令不是。

还要注意 . 告诉 java 和 javac 命令在当前目录中查找 classes。当 运行 您的程序使用 java 命令时,不要忘记提供 class 罐子的路径。

我找到了解决这个问题的答案。

正常编译脚本

javac Query.java

然后在执行的时候指定驱动

java -classpath ".;sqlite-jdbc-3.7.2.jar" Query

它会 运行 很好