找不到适合 jdbc:sqlite 的驱动程序

Posted

技术标签:

【中文标题】找不到适合 jdbc:sqlite 的驱动程序【英文标题】:No suitable driver found for jdbc:sqlite 【发布时间】:2021-03-26 14:19:02 【问题描述】:

我无法连接到我的 SQLite 数据库。在我的 Windows PC 上一切正常,但如果我想在 Linux(Raspberry PI) 上运行我的程序,则会出现标题所示的错误。

这是我在 Windows 上的连接:

public static final String DB_NAME = "settings.db";
public static final String CONNECTION_STRING = "jdbc:sqlite:C:\\Users\\oschr\\eclipse-workspace\\Dippmitteldosierer\\src\\" + DB_NAME;

在我为 Linux 导出我的程序之前,我更改了我的连接字符串:

public static final String CONNECTION_STRING = "jdbc:sqlite:/home/pi/Desktop/" + DB_NAME;

如果没有数据库,我使用以下代码创建它:

String url = CONNECTION_STRING;
try 
    try 
        Class.forName("org.sqlite.JDBC");
     catch (ClassNotFoundException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
    
    connection = DriverManager.getConnection(url);
    statement = connection.createStatement();
    
    statement.execute("CREATE TABLE IF NOT EXISTS " + TABLE_VORWAHLMENGEN + "( " + COLUMN_VORWAHLNAME + " TEXT, " + COLUMN_VORWAHLMENGE + " INTEGER)");
    statement.execute("CREATE TABLE IF NOT EXISTS " + TABLE_KALIBRIERUNGEN + "( " + COLUMN_KALIBRIERUNGNAME + " TEXT, " + COLUMN_KALIBRIERUNGMENGE + " INTEGER)");

这是我的构建路径:

这是我的项目:

有人可以帮帮我吗?

【问题讨论】:

你也收到ClassNotFoundException吗? 【参考方案1】:

您正在使用一些您没有在问题中解释的过程来制作罐子。然后你将这个 jar 发送到 pi 并在那里运行它。

您正在使用的过程只是将您的代码变成一个罐子。它不包括您的所有依赖项;这通常不会这样做,因为它会使 jar 变得巨大,并使更新变得复杂。

选项 1:带有类路径条目的可执行 jars

您需要最终得到一个 jar,该 jar 在清单中列出了 jdbc-sqlite.jarClass-Path 条目,然后确保此 jar 在与 yourapp.jar 的“兄弟”相同的目录中可用。如何?嗯,这取决于将您的类文件转换为 jar 文件的过程。

选项 2:不要使用 java -jar 运行它。

如果您在那里运行java -jar sqlite.jar:yourapp.jar com.foo.YourMainClass,您可以手动执行上述操作。

选项 3:条带化

更新该进程,以便将 dep(s) 条带化到一个巨大的一切 jar 中。通常,您需要一个构建系统,例如 maven 或 gradle 来执行此操作。

【讨论】:

我不知道如何执行选项 1。我必须将 sqlite.jar 放在包含我的应用程序的文件夹中吗?我如何编写 Class-Path 条目?选项 2 不起作用,它给出了错误:无法访问 jarfile sqlite.jar:myapp.jar 我不能用 Eclipse 自动执行此操作吗?或者如果eclipse没有这个功能我应该使用Intellij? 选项 2:微不足道,因为您不需要更改任何内容。其余的:是的,但是,“使用 IDE 构建”不是推荐的方法;相反,有一个构建(基于 maven 或 gradle)。然后 Eclipse 可以将您的项目视为 maven 项目没有问题。 在 Eclipse 中,右键单击您的项目,导出... -> 可运行的 jar 文件 -> '库处理:将所需的库提取到生成的 jar' 将为您提供类似于选项 #3 的内容。跨度> 如果我将所需的库提取到生成的 jar 中并尝试在 Rasberry Pi 上启动我的应用程序,我会收到错误:无效或损坏的 jarfile Myapp.jar。抱歉,我对maven一无所知。为什么我的应用程序在 Windows 上运行没有问题,但在 Linux 上却没有......?!?

以上是关于找不到适合 jdbc:sqlite 的驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

找不到适合 jdbc mysql 的驱动程序?

如何修复:找不到适合 jdbc:sqlserver 的驱动程序 [重复]

找不到适合'jdbc:mysql:// localhost:3306 / mysql的驱动程序[重复]

SQLException: 找不到适合 jdbc:postgresql 的驱动程序

使用 DataSource (Java Eclipse) 时“找不到适合 jdbc 的驱动程序”

找不到适合 jdbc:amazonaws 的驱动程序