我在将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);
}
}
}
我的classpath确实包含
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
我做错了吗?
答案 0 :(得分:1)
使用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提供类路径。
答案 1 :(得分:-1)
我找到了解决这个问题的答案。
正常编译脚本
javac Query.java
然后在执行
时指定驱动程序java -classpath ".;sqlite-jdbc-3.7.2.jar" Query
它会正常运行