我在将 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
我做错了什么吗?
您需要在使用
sqlite-jdbc-3.7.2.jar
选项编译和运行类时在类路径中显式提供 -cp
文件。 java 和 javac 命令只会在类路径中查找 .class 文件,而不是 jar。
试试这个:
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 命令在当前目录中查找类。使用 java
命令运行程序时,不要忘记提供 jar 的类路径。
我找到了解决这个问题的答案。
正常编译脚本
javac Query.java
然后执行时指定驱动程序
java -classpath ".;sqlite-jdbc-3.7.2.jar" Query
它会运行良好