【问题标题】:Java SQLite3 Connection FailingJava SQLite3 连接失败
【发布时间】:2015-03-14 00:31:54
【问题描述】:

我在将我的 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

我做错了吗?

【问题讨论】:

  • “我在连接我的 java 脚本时遇到了一些问题”。这就是你说的。 javascript在哪里?顺便说一句,你有没有尝试谷歌。大多数阅读这个问题的人都会从那里给你答案。没有人记得这样的事情。作为开发人员,知道如何在 Google 上找到答案对于保持良好的工作与生活平衡大有帮助。
  • javascript?你把我丢在那里了?
  • 哦,我明白了,我的意思是用 java 编写的脚本,而不是真正的 JavaScript。我已经用谷歌搜索了它,尽管一切都说 sqlite jdbc 驱动程序丢失了,但我确定它在我的类路径中,所以我只是在继续谷歌搜索时看看是否有人知道其他任何事情
  • 我也看到很多我在谷歌找到的东西回答了在 Netbeans、Eclipse 等工作的人的问题,但我是从命令行编码的,所以我没有发现它们很有帮助
  • 嘿机器人我找到了答案并在下面发布了,你很接近

标签: java database sqlite connect


【解决方案1】:

在使用-cp 选项编译和运行类时,您需要在类路径中显式提供sqlite-jdbc-3.7.2.jar 文件。 java 和 javac 命令只会在类路径中查找 .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 命令在当前目录中查找类。使用java 命令运行程序时,不要忘记提供 jar 的类路径。

【讨论】:

  • 这太忙了,比如 javac Query.java -cp sqlite-jdbc-3.7.2.jar?
  • @Trent 查看我的编辑。如果您需要更多输入,请告诉我。如果没有,别忘了接受答案。
  • 恐怕它没有用,但我真的很感谢你的帮助,我会继续谷歌搜索:'{
  • @Trent 不知道为什么它不起作用。这次您是否仍然遇到完全相同的错误或新错误?除了不将罐子放在类路径中之外,没有其他原因可以让您在问题中发布错误。
  • 同样的错误,我什至把sqlite驱动和主类放在同一目录下
【解决方案2】:

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

正常编译脚本

javac Query.java

然后在执行时指定驱动

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

它会运行良好

【讨论】:

  • 我已经在我的回答中提到了这一点。您的回答没有添加我尚未涵盖的任何新内容。我猜你错过了我回答的最后一行?顺便说一句,你的 javac 命令不可能在没有 classpath 选项的情况下工作,但 java 命令需要 classpath 选项。您能解释一下如何在不提供类路径的情况下进行编译吗?
  • javac 命令完美地编译程序,正如我在问题中所说,jdbc 驱动程序已经在路径中。当我使用 Java 命令运行脚本时它忽略了驱动程序,所以我在运行程序时也需要包含驱动程序,你的答案没有错,但它添加了一个不必要的 javac -cp 步骤并且不是 100% 清楚。感谢您的帮助,因为它帮助我查看了其他选项
  • jdbc 驱动程序不在您的路径中。 jdbc 驱动程序所在的文件夹位于您的路径中。这应该不起作用,因为使用 javac 时不会在路径中查找 jar 文件。如果 java 需要类路径,javac 也应该需要它。
  • 如果这是真的,那我不知道,但它一直编译得很好,只是从来没有运行过
猜你喜欢
  • 2021-06-23
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-14
  • 2017-06-12
  • 2016-03-08
  • 2016-01-09
相关资源
最近更新 更多