Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有ClassNotFoundException的情况下连接到Java中的本地SQLite?_Java_Sqlite_Jdbc - Fatal编程技术网

如何在没有ClassNotFoundException的情况下连接到Java中的本地SQLite?

如何在没有ClassNotFoundException的情况下连接到Java中的本地SQLite?,java,sqlite,jdbc,Java,Sqlite,Jdbc,我正在尝试设置一个简单的Java应用程序,以连接到SQLite数据库,但不断收到: ClassNotFoundException: org.sqlite.jdbc. 我已经下载了sqlite jdbc驱动程序jar,并将其放置在与.java相同的目录中,我正在使用以下命令行进行编译: javac -cp sqlite-jdbc-3.7.2.jar sqlite3test.java 在运行时,我会得到上面的异常。代码如下: import java.sql.*; public class sq

我正在尝试设置一个简单的Java应用程序,以连接到SQLite数据库,但不断收到:

ClassNotFoundException: org.sqlite.jdbc.
我已经下载了sqlite jdbc驱动程序jar,并将其放置在与.java相同的目录中,我正在使用以下命令行进行编译:

javac -cp sqlite-jdbc-3.7.2.jar sqlite3test.java
在运行时,我会得到上面的异常。代码如下:

import java.sql.*;

public class sqlite3test
{
    public static void main(String args[])
    {
        Connection c = null;
        try
        {
            Class.forName("org.sqlite.JDBC");
            c = DriverManager.getConnection("jdbc:sqlite:cs261.db");
        }
        catch ( Exception e )
        {
            System.err.println(e.getClass().getName() + ": " + e.getMessage());
            System.exit(0);
        }
        System.out.println("Opened database successfully");
    }
}
如何解决此问题?
谢谢。

检查安装的数据库版本,在我的例子中是:SQLite版本3.8.2

我使用的是sqlite-jdbc-3.8.9.1.jar,它的版本号比所安装的数据库的版本号要高,并且工作得很好

您必须确保jar文件版本应大于或等于系统中安装的数据库版本

从java 6+的最新版本中,您不需要加载类文件

删除以下行并尝试它应该可以工作

注意:我建议您将类名从sqlite3test重命名为sqlite3test,尽管这不是必需的。根据JAVA代码约定,类名应始终以大写字母开头

有不同的方法将驱动程序加载到类路径中:

将jar放入$JAVA_HOME/jre/lib/ext文件夹中 使用maven依赖项 使用java-cp 如果您使用的是类似eclipse的IDE,那么右键单击项目->构建路径->配置构建路径->库->添加外部jar并在那里找到您的jar。
供您参考:

您如何执行应用程序?您展示的是如何编译,而不是如何执行。我猜您在运行应用程序时没有在类路径上指定sqlite依赖项。请注意,在编译时,只要针对JDBC接口编程,就可能不需要sqlite依赖关系。您是否建议像“java-cp sqlite-JDBC-3.7.2.jar sqlite3test”那样运行?因为这只会给我一个错误,说“找不到或加载主类”,不,您需要java-cp sqlite-jdbc-3.7.2.jar;。sqlite3test替换测试;with:如果您不在Windows上,我得到一个SQLException:仍然没有找到适合jdbc的驱动程序:sqlite:cs261.db。我下载了sqlite-jdbc-3.16.1.jar,复制了您的代码,将它们放在同一个文件夹中,用javac*.java编译,然后用java-cp sqlite-jdbc-3.16.1.jar;运行它;。sqlite3test并且它可以工作。如果我删除这一行,我会得到以下错误:java.sql.SQLException:没有找到适合jdbc的驱动程序:sqlite:cs261.dbtry将sqlite-jdbc-3.7.2.jar文件放在$java_HOME/jre/lib/ext文件夹中,我仍然会得到相同的SQLException:您正在使用的java版本?java-终端版本1.7.1_121
Class.forName("org.sqlite.JDBC");